From: Robin Gustafsson <robin@rgson.se>
Date: Wed, 12 Mar 2025 22:11:17 +0100
Subject: Fix PHPUnit 12 compatibility

Upstream is preserving PHP 7 compatibility on version 2.x so PHPUnit 12
won't be supported.

Forwarded: not-needed
---
 tests/Carbon/AddMonthsTest.php                     | 49 ++++++++--------------
 tests/Carbon/CreateTest.php                        |  4 +-
 .../Exceptions/NotLocaleAwareExceptionTest.php     |  4 +-
 tests/Carbon/GettersTest.php                       | 10 ++---
 tests/Carbon/IsTest.php                            |  5 +--
 tests/Carbon/IssetTest.php                         |  4 +-
 tests/Carbon/LocalizationTest.php                  | 10 ++---
 tests/Carbon/ModifyNearDSTChangeTest.php           |  7 ++--
 tests/Carbon/SerializationTest.php                 |  4 +-
 tests/Carbon/SettersTest.php                       |  4 +-
 tests/Carbon/StartEndOfTest.php                    |  7 ++--
 tests/Carbon/WeekTest.php                          |  9 ++--
 tests/CarbonImmutable/AddMonthsTest.php            | 49 ++++++++--------------
 tests/CarbonImmutable/GenericMacroTest.php         |  5 +--
 tests/CarbonImmutable/GettersTest.php              | 10 ++---
 tests/CarbonImmutable/IsTest.php                   |  5 +--
 tests/CarbonImmutable/IssetTest.php                |  4 +-
 tests/CarbonImmutable/LocalizationTest.php         | 10 ++---
 tests/CarbonImmutable/ModifyNearDSTChangeTest.php  |  7 ++--
 tests/CarbonImmutable/SerializationTest.php        |  4 +-
 tests/CarbonImmutable/SettersTest.php              |  4 +-
 tests/CarbonImmutable/StartEndOfTest.php           |  7 ++--
 tests/CarbonImmutable/WeekTest.php                 |  9 ++--
 tests/CarbonInterval/AddTest.php                   |  4 +-
 tests/CarbonInterval/CascadeTest.php               | 16 +++----
 tests/CarbonInterval/FromStringTest.php            |  7 ++--
 tests/CarbonInterval/ParseFromLocaleTest.php       |  9 ++--
 tests/CarbonInterval/ToPeriodTest.php              |  5 +--
 tests/CarbonInterval/TotalTest.php                 | 11 +++--
 tests/CarbonPeriod/CreateTest.php                  | 33 ++++-----------
 tests/CarbonPeriod/IteratorTest.php                |  5 +--
 tests/CarbonPeriod/ToStringTest.php                |  9 ++--
 tests/CarbonTimeZone/ConversionsTest.php           |  7 ++--
 tests/CommonTraits/MacroContextNestingTest.php     |  9 ++--
 tests/Doctrine/CarbonTypesTest.php                 | 29 ++++++-------
 tests/Laravel/ServiceProviderTest.php              |  5 +--
 36 files changed, 146 insertions(+), 234 deletions(-)

diff --git a/tests/Carbon/AddMonthsTest.php b/tests/Carbon/AddMonthsTest.php
index 5616b3b..6163087 100644
--- a/tests/Carbon/AddMonthsTest.php
+++ b/tests/Carbon/AddMonthsTest.php
@@ -15,6 +15,7 @@ namespace Tests\Carbon;
 
 use Carbon\Carbon;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class AddMonthsTest extends AbstractTestCase
@@ -43,26 +44,24 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthNoOverflow')]
     public function testAddMonthNoOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->addMonthNoOverflow($months), $y, $m, $d);
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthNoOverflow')]
     public function testAddMonthsNoOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->addMonthsNoOverflow($months), $y, $m, $d);
@@ -78,26 +77,24 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthNoOverflow')]
     public function testSubMonthNoOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->subMonthNoOverflow($months), $y, $m, $d);
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthNoOverflow')]
     public function testSubMonthsNoOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->subMonthsNoOverflow($months), $y, $m, $d);
@@ -113,26 +110,24 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthWithOverflow')]
     public function testAddMonthWithOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->addMonthWithOverflow($months), $y, $m, $d);
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthWithOverflow')]
     public function testAddMonthsWithOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->addMonthsWithOverflow($months), $y, $m, $d);
@@ -148,26 +143,24 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthWithOverflow')]
     public function testSubMonthWithOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->subMonthWithOverflow($months), $y, $m, $d);
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthWithOverflow')]
     public function testSubMonthsWithOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->subMonthsWithOverflow($months), $y, $m, $d);
@@ -200,13 +193,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthWithOverflow')]
     public function testUseOverflowAddMonth($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(true);
@@ -214,13 +206,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthWithOverflow')]
     public function testUseOverflowAddMonths($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(true);
@@ -228,13 +219,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthWithOverflow')]
     public function testUseOverflowSubMonth($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(true);
@@ -242,13 +232,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthWithOverflow')]
     public function testUseOverflowSubMonths($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(true);
@@ -256,13 +245,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthNoOverflow')]
     public function testSkipOverflowAddMonth($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(false);
@@ -270,13 +258,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthNoOverflow')]
     public function testSkipOverflowAddMonths($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(false);
@@ -284,13 +271,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthNoOverflow')]
     public function testSkipOverflowSubMonth($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(false);
@@ -298,13 +284,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthNoOverflow')]
     public function testSkipOverflowSubMonths($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(false);
diff --git a/tests/Carbon/CreateTest.php b/tests/Carbon/CreateTest.php
index f7416ab..c81c183 100644
--- a/tests/Carbon/CreateTest.php
+++ b/tests/Carbon/CreateTest.php
@@ -19,6 +19,7 @@ use Carbon\Exceptions\OutOfRangeException;
 use DateTime;
 use DateTimeZone;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class CreateTest extends AbstractTestCase
@@ -307,10 +308,9 @@ class CreateTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\CreateTest::dataForLocales
-     *
      * @group localization
      */
+    #[DataProvider('dataForLocales')]
     public function testParseFromLocaleForEachLocale($locale)
     {
         $expectedDate = Carbon::parse('today 4:26');
diff --git a/tests/Carbon/Exceptions/NotLocaleAwareExceptionTest.php b/tests/Carbon/Exceptions/NotLocaleAwareExceptionTest.php
index 8a8ee07..1686e38 100644
--- a/tests/Carbon/Exceptions/NotLocaleAwareExceptionTest.php
+++ b/tests/Carbon/Exceptions/NotLocaleAwareExceptionTest.php
@@ -14,6 +14,7 @@ namespace Tests\Carbon\Exceptions;
 use Carbon\Exceptions\NotLocaleAwareException;
 use Generator;
 use stdClass;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class NotLocaleAwareExceptionTest extends AbstractTestCase
@@ -31,13 +32,12 @@ class NotLocaleAwareExceptionTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\Exceptions\NotLocaleAwareExceptionTest::dataForTestNotAPeriodException
-     *
      * @param mixed  $object
      * @param string $message
      *
      * @return void
      */
+    #[DataProvider('dataForTestNotAPeriodException')]
     public function testNotAPeriodException($object, $message): void
     {
         $exception = new NotLocaleAwareException($object);
diff --git a/tests/Carbon/GettersTest.php b/tests/Carbon/GettersTest.php
index 34a249e..e722c54 100644
--- a/tests/Carbon/GettersTest.php
+++ b/tests/Carbon/GettersTest.php
@@ -16,6 +16,7 @@ namespace Tests\Carbon;
 use Carbon\Carbon;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class GettersTest extends AbstractTestCase
@@ -261,11 +262,10 @@ class GettersTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\GettersTest::dataForTestQuarter
-     *
      * @param int $month
      * @param int $quarter
      */
+    #[DataProvider('dataForTestQuarter')]
     public function testQuarterFirstOfMonth($month, $quarter)
     {
         $c = Carbon::create(2015, $month, 1)->startOfMonth();
@@ -273,11 +273,10 @@ class GettersTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\GettersTest::dataForTestQuarter
-     *
      * @param int $month
      * @param int $quarter
      */
+    #[DataProvider('dataForTestQuarter')]
     public function testQuarterMiddleOfMonth($month, $quarter)
     {
         $c = Carbon::create(2015, $month, 15, 12, 13, 14);
@@ -285,11 +284,10 @@ class GettersTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\GettersTest::dataForTestQuarter
-     *
      * @param int $month
      * @param int $quarter
      */
+    #[DataProvider('dataForTestQuarter')]
     public function testQuarterLastOfMonth($month, $quarter)
     {
         $c = Carbon::create(2015, $month, 1)->endOfMonth();
diff --git a/tests/Carbon/IsTest.php b/tests/Carbon/IsTest.php
index 0617c6f..057a455 100644
--- a/tests/Carbon/IsTest.php
+++ b/tests/Carbon/IsTest.php
@@ -18,6 +18,7 @@ use Carbon\Carbon;
 use DateTime;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use stdClass;
 use Tests\AbstractTestCase;
 
@@ -970,9 +971,7 @@ class IsTest extends AbstractTestCase
         yield ['r'];
     }
 
-    /**
-     * @dataProvider \Tests\Carbon\IsTest::dataForFormatLetters
-     */
+    #[DataProvider('dataForFormatLetters')]
     public function testHasFormatWithSingleLetter($letter)
     {
         $output = Carbon::now()->format($letter);
diff --git a/tests/Carbon/IssetTest.php b/tests/Carbon/IssetTest.php
index 451a588..d0afd21 100644
--- a/tests/Carbon/IssetTest.php
+++ b/tests/Carbon/IssetTest.php
@@ -15,6 +15,7 @@ namespace Tests\Carbon;
 
 use Carbon\Carbon;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class IssetTest extends AbstractTestCase
@@ -94,10 +95,9 @@ class IssetTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\IssetTest::dataForTestIssetReturnTrueForProperties
-     *
      * @param string $property
      */
+    #[DataProvider('dataForTestIssetReturnTrueForProperties')]
     public function testIssetReturnTrueForProperties(string $property): void
     {
         Carbon::useStrictMode(false);
diff --git a/tests/Carbon/LocalizationTest.php b/tests/Carbon/LocalizationTest.php
index 3d6e7ba..19bc960 100644
--- a/tests/Carbon/LocalizationTest.php
+++ b/tests/Carbon/LocalizationTest.php
@@ -20,6 +20,7 @@ use Carbon\Language;
 use Carbon\Translator;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Symfony\Component\Translation\IdentityTranslator;
 use Symfony\Component\Translation\Loader\ArrayLoader;
 use Symfony\Component\Translation\MessageCatalogue;
@@ -316,10 +317,9 @@ class LocalizationTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\LocalizationTest::dataForLocales
-     *
      * @param string $locale
      */
+    #[DataProvider('dataForLocales')]
     public function testSetLocale($locale)
     {
         $this->assertTrue(Carbon::setLocale($locale));
@@ -327,10 +327,9 @@ class LocalizationTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\LocalizationTest::dataForLocales
-     *
      * @param string $locale
      */
+    #[DataProvider('dataForLocales')]
     public function testSetTranslator($locale)
     {
         $ori = Carbon::getTranslator();
@@ -369,10 +368,9 @@ class LocalizationTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\LocalizationTest::dataForTestSetLocaleWithMalformedLocale
-     *
      * @param string $malformedLocale
      */
+    #[DataProvider('dataForTestSetLocaleWithMalformedLocale')]
     public function testSetLocaleWithMalformedLocale($malformedLocale)
     {
         $this->assertTrue(Carbon::setLocale($malformedLocale));
diff --git a/tests/Carbon/ModifyNearDSTChangeTest.php b/tests/Carbon/ModifyNearDSTChangeTest.php
index 4870752..cb09559 100644
--- a/tests/Carbon/ModifyNearDSTChangeTest.php
+++ b/tests/Carbon/ModifyNearDSTChangeTest.php
@@ -15,6 +15,7 @@ namespace Tests\Carbon;
 
 use Carbon\Carbon;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class ModifyNearDSTChangeTest extends AbstractTestCase
@@ -25,9 +26,8 @@ class ModifyNearDSTChangeTest extends AbstractTestCase
      * @param string $dateString
      * @param int    $addHours
      * @param string $expected
-     *
-     * @dataProvider \Tests\Carbon\ModifyNearDSTChangeTest::dataForTransitionTests
      */
+    #[DataProvider('dataForTransitionTests')]
     public function testTransitionInNonDefaultTimezone($dateString, $addHours, $expected)
     {
         date_default_timezone_set('Europe/london');
@@ -42,9 +42,8 @@ class ModifyNearDSTChangeTest extends AbstractTestCase
      * @param string $dateString
      * @param int    $addHours
      * @param string $expected
-     *
-     * @dataProvider \Tests\Carbon\ModifyNearDSTChangeTest::dataForTransitionTests
      */
+    #[DataProvider('dataForTransitionTests')]
     public function testTransitionInDefaultTimezone($dateString, $addHours, $expected)
     {
         date_default_timezone_set('America/New_York');
diff --git a/tests/Carbon/SerializationTest.php b/tests/Carbon/SerializationTest.php
index 8bc2371..08aa457 100644
--- a/tests/Carbon/SerializationTest.php
+++ b/tests/Carbon/SerializationTest.php
@@ -20,6 +20,7 @@ use InvalidArgumentException;
 use ReflectionClass;
 use ReflectionObject;
 use ReflectionProperty;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 use Throwable;
 
@@ -84,9 +85,8 @@ class SerializationTest extends AbstractTestCase
 
     /**
      * @param mixed $value
-     *
-     * @dataProvider \Tests\Carbon\SerializationTest::dataForTestFromUnserializedWithInvalidValue
      */
+    #[DataProvider('dataForTestFromUnserializedWithInvalidValue')]
     public function testFromUnserializedWithInvalidValue($value)
     {
         $this->expectExceptionObject(new InvalidArgumentException(
diff --git a/tests/Carbon/SettersTest.php b/tests/Carbon/SettersTest.php
index e1a5e46..d9852f0 100644
--- a/tests/Carbon/SettersTest.php
+++ b/tests/Carbon/SettersTest.php
@@ -19,6 +19,7 @@ use DateTimeZone;
 use Exception;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class SettersTest extends AbstractTestCase
@@ -499,13 +500,12 @@ class SettersTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\SettersTest::dataForTestSetTimeFromTimeString
-     *
      * @param int    $hour
      * @param int    $minute
      * @param int    $second
      * @param string $time
      */
+    #[DataProvider('dataForTestSetTimeFromTimeString')]
     public function testSetTimeFromTimeString($hour, $minute, $second, $time)
     {
         Carbon::setTestNow(Carbon::create(2016, 2, 12, 1, 2, 3));
diff --git a/tests/Carbon/StartEndOfTest.php b/tests/Carbon/StartEndOfTest.php
index 0db7024..a153fa6 100644
--- a/tests/Carbon/StartEndOfTest.php
+++ b/tests/Carbon/StartEndOfTest.php
@@ -16,6 +16,7 @@ namespace Tests\Carbon;
 use Carbon\Carbon;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class StartEndOfTest extends AbstractTestCase
@@ -459,11 +460,10 @@ class StartEndOfTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\StartEndOfTest::dataForTestStartOfQuarter
-     *
      * @param int $month
      * @param int $startOfQuarterMonth
      */
+    #[DataProvider('dataForTestStartOfQuarter')]
     public function testStartOfQuarter($month, $startOfQuarterMonth)
     {
         $dt = Carbon::create(2015, $month, 15, 1, 2, 3);
@@ -493,12 +493,11 @@ class StartEndOfTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\Carbon\StartEndOfTest::dataForTestEndOfQuarter
-     *
      * @param int $month
      * @param int $endOfQuarterMonth
      * @param int $endOfQuarterDay
      */
+    #[DataProvider('dataForTestEndOfQuarter')]
     public function testEndOfQuarter($month, $endOfQuarterMonth, $endOfQuarterDay)
     {
         $dt = Carbon::create(2015, $month, 15, 1, 2, 3);
diff --git a/tests/Carbon/WeekTest.php b/tests/Carbon/WeekTest.php
index 0f64cc4..39d7043 100644
--- a/tests/Carbon/WeekTest.php
+++ b/tests/Carbon/WeekTest.php
@@ -15,6 +15,7 @@ namespace Tests\Carbon;
 
 use Carbon\Carbon;
 use Carbon\CarbonInterface;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class WeekTest extends AbstractTestCase
@@ -5438,9 +5439,7 @@ class WeekTest extends AbstractTestCase
         $this->assertSame('2022-10-18 00:00', Carbon::today()->weekday(CarbonInterface::TUESDAY)->format('Y-m-d H:i'));
     }
 
-    /**
-     * @dataProvider getDaysFromStartOfWeekDataProvider
-     */
+    #[DataProvider('getDaysFromStartOfWeekDataProvider')]
     public function testGetDaysFromStartOfWeek(string $locale, string $date, int $daysCount)
     {
         $this->assertSame(
@@ -5473,9 +5472,7 @@ class WeekTest extends AbstractTestCase
         ];
     }
 
-    /**
-     * @dataProvider getDaysFromStartOfWeekDataProviderExplicit
-     */
+    #[DataProvider('getDaysFromStartOfWeekDataProviderExplicit')]
     public function testGetDaysFromStartOfWeekExplicit(int $start, string $date, int $daysCount)
     {
         static $locales = [null, 'pt_BR', 'de_CH', 'ar_MA'];
diff --git a/tests/CarbonImmutable/AddMonthsTest.php b/tests/CarbonImmutable/AddMonthsTest.php
index bf90c29..d9fd26d 100644
--- a/tests/CarbonImmutable/AddMonthsTest.php
+++ b/tests/CarbonImmutable/AddMonthsTest.php
@@ -14,6 +14,7 @@ declare(strict_types=1);
 namespace Tests\CarbonImmutable;
 
 use Carbon\CarbonImmutable as Carbon;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class AddMonthsTest extends AbstractTestCase
@@ -45,26 +46,24 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestAddMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthNoOverflow')]
     public function testAddMonthNoOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->addMonthNoOverflow($months), $y, $m, $d);
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestAddMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthNoOverflow')]
     public function testAddMonthsNoOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->addMonthsNoOverflow($months), $y, $m, $d);
@@ -82,26 +81,24 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestSubMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthNoOverflow')]
     public function testSubMonthNoOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->subMonthNoOverflow($months), $y, $m, $d);
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestSubMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthNoOverflow')]
     public function testSubMonthsNoOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->subMonthsNoOverflow($months), $y, $m, $d);
@@ -119,26 +116,24 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestAddMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthWithOverflow')]
     public function testAddMonthWithOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->addMonthWithOverflow($months), $y, $m, $d);
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestAddMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthWithOverflow')]
     public function testAddMonthsWithOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->addMonthsWithOverflow($months), $y, $m, $d);
@@ -156,26 +151,24 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestSubMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthWithOverflow')]
     public function testSubMonthWithOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->subMonthWithOverflow($months), $y, $m, $d);
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestSubMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthWithOverflow')]
     public function testSubMonthsWithOverflow($months, $y, $m, $d)
     {
         $this->assertCarbon($this->carbon->subMonthsWithOverflow($months), $y, $m, $d);
@@ -208,13 +201,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestAddMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthWithOverflow')]
     public function testUseOverflowAddMonth($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(true);
@@ -222,13 +214,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestAddMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthWithOverflow')]
     public function testUseOverflowAddMonths($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(true);
@@ -236,13 +227,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestSubMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthWithOverflow')]
     public function testUseOverflowSubMonth($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(true);
@@ -250,13 +240,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestSubMonthWithOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthWithOverflow')]
     public function testUseOverflowSubMonths($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(true);
@@ -264,13 +253,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestAddMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthNoOverflow')]
     public function testSkipOverflowAddMonth($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(false);
@@ -278,13 +266,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestAddMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestAddMonthNoOverflow')]
     public function testSkipOverflowAddMonths($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(false);
@@ -292,13 +279,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestSubMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthNoOverflow')]
     public function testSkipOverflowSubMonth($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(false);
@@ -306,13 +292,12 @@ class AddMonthsTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\AddMonthsTest::dataForTestSubMonthNoOverflow
-     *
      * @param int $months
      * @param int $y
      * @param int $m
      * @param int $d
      */
+    #[DataProvider('dataForTestSubMonthNoOverflow')]
     public function testSkipOverflowSubMonths($months, $y, $m, $d)
     {
         Carbon::useMonthsOverflow(false);
diff --git a/tests/CarbonImmutable/GenericMacroTest.php b/tests/CarbonImmutable/GenericMacroTest.php
index 01edf6d..8d8e402 100644
--- a/tests/CarbonImmutable/GenericMacroTest.php
+++ b/tests/CarbonImmutable/GenericMacroTest.php
@@ -15,14 +15,13 @@ namespace Tests\CarbonImmutable;
 
 use BadMethodCallException;
 use Carbon\CarbonImmutable as Carbon;
+use PHPUnit\Framework\Attributes\RequiresPhp;
 use Tests\AbstractTestCaseWithOldNow;
 use Throwable;
 
 class GenericMacroTest extends AbstractTestCaseWithOldNow
 {
-    /**
-     * @requires PHP < 8.0
-     */
+    #[RequiresPhp('< 8.0')]
     public function testGenericMacroBinding()
     {
         Carbon::genericMacro(function ($method) {
diff --git a/tests/CarbonImmutable/GettersTest.php b/tests/CarbonImmutable/GettersTest.php
index 553d441..2d13104 100644
--- a/tests/CarbonImmutable/GettersTest.php
+++ b/tests/CarbonImmutable/GettersTest.php
@@ -15,6 +15,7 @@ namespace Tests\CarbonImmutable;
 
 use Carbon\CarbonImmutable as Carbon;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class GettersTest extends AbstractTestCase
@@ -185,11 +186,10 @@ class GettersTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\GettersTest::dataForTestQuarter
-     *
      * @param int $month
      * @param int $quarter
      */
+    #[DataProvider('dataForTestQuarter')]
     public function testQuarterFirstOfMonth($month, $quarter)
     {
         $c = Carbon::create(2015, $month, 1)->startOfMonth();
@@ -197,11 +197,10 @@ class GettersTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\GettersTest::dataForTestQuarter
-     *
      * @param int $month
      * @param int $quarter
      */
+    #[DataProvider('dataForTestQuarter')]
     public function testQuarterMiddleOfMonth($month, $quarter)
     {
         $c = Carbon::create(2015, $month, 15, 12, 13, 14);
@@ -209,11 +208,10 @@ class GettersTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\GettersTest::dataForTestQuarter
-     *
      * @param int $month
      * @param int $quarter
      */
+    #[DataProvider('dataForTestQuarter')]
     public function testQuarterLastOfMonth($month, $quarter)
     {
         $c = Carbon::create(2015, $month, 1)->endOfMonth();
diff --git a/tests/CarbonImmutable/IsTest.php b/tests/CarbonImmutable/IsTest.php
index bcf5cc9..e232e9a 100644
--- a/tests/CarbonImmutable/IsTest.php
+++ b/tests/CarbonImmutable/IsTest.php
@@ -17,6 +17,7 @@ use Carbon\CarbonImmutable as Carbon;
 use DateTime;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use stdClass;
 use Tests\AbstractTestCase;
 
@@ -954,9 +955,7 @@ class IsTest extends AbstractTestCase
         yield ['r'];
     }
 
-    /**
-     * @dataProvider \Tests\CarbonImmutable\IsTest::dataForFormatLetters
-     */
+    #[DataProvider('dataForFormatLetters')]
     public function testHasFormatWithSingleLetter($letter)
     {
         $output = Carbon::now()->format($letter);
diff --git a/tests/CarbonImmutable/IssetTest.php b/tests/CarbonImmutable/IssetTest.php
index 9f84d0a..e4a1a15 100644
--- a/tests/CarbonImmutable/IssetTest.php
+++ b/tests/CarbonImmutable/IssetTest.php
@@ -15,6 +15,7 @@ namespace Tests\CarbonImmutable;
 
 use Carbon\CarbonImmutable as Carbon;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class IssetTest extends AbstractTestCase
@@ -94,10 +95,9 @@ class IssetTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\IssetTest::dataForTestIssetReturnTrueForProperties
-     *
      * @param string $property
      */
+    #[DataProvider('dataForTestIssetReturnTrueForProperties')]
     public function testIssetReturnTrueForProperties(string $property): void
     {
         Carbon::useStrictMode(false);
diff --git a/tests/CarbonImmutable/LocalizationTest.php b/tests/CarbonImmutable/LocalizationTest.php
index 9d3a338..5d0f6c9 100644
--- a/tests/CarbonImmutable/LocalizationTest.php
+++ b/tests/CarbonImmutable/LocalizationTest.php
@@ -19,6 +19,7 @@ use Carbon\Exceptions\NotLocaleAwareException;
 use Carbon\Language;
 use Carbon\Translator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Symfony\Component\Translation\IdentityTranslator;
 use Symfony\Component\Translation\Loader\ArrayLoader;
 use Symfony\Component\Translation\MessageCatalogue;
@@ -317,10 +318,9 @@ class LocalizationTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\LocalizationTest::dataForLocales
-     *
      * @param string $locale
      */
+    #[DataProvider('dataForLocales')]
     public function testSetLocale($locale)
     {
         $this->assertTrue(Carbon::setLocale($locale));
@@ -328,10 +328,9 @@ class LocalizationTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\LocalizationTest::dataForLocales
-     *
      * @param string $locale
      */
+    #[DataProvider('dataForLocales')]
     public function testSetTranslator($locale)
     {
         $ori = Carbon::getTranslator();
@@ -371,10 +370,9 @@ class LocalizationTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\LocalizationTest::dataForTestSetLocaleWithMalformedLocale
-     *
      * @param string $malformedLocale
      */
+    #[DataProvider('dataForTestSetLocaleWithMalformedLocale')]
     public function testSetLocaleWithMalformedLocale($malformedLocale)
     {
         $this->assertTrue(Carbon::setLocale($malformedLocale));
diff --git a/tests/CarbonImmutable/ModifyNearDSTChangeTest.php b/tests/CarbonImmutable/ModifyNearDSTChangeTest.php
index cf3a6c4..13268df 100644
--- a/tests/CarbonImmutable/ModifyNearDSTChangeTest.php
+++ b/tests/CarbonImmutable/ModifyNearDSTChangeTest.php
@@ -15,6 +15,7 @@ namespace Tests\CarbonImmutable;
 
 use Carbon\CarbonImmutable as Carbon;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class ModifyNearDSTChangeTest extends AbstractTestCase
@@ -25,9 +26,8 @@ class ModifyNearDSTChangeTest extends AbstractTestCase
      * @param string $dateString
      * @param int    $addHours
      * @param string $expected
-     *
-     * @dataProvider \Tests\CarbonImmutable\ModifyNearDSTChangeTest::dataForTransitionTests
      */
+    #[DataProvider('dataForTransitionTests')]
     public function testTransitionInNonDefaultTimezone($dateString, $addHours, $expected)
     {
         date_default_timezone_set('Europe/london');
@@ -42,9 +42,8 @@ class ModifyNearDSTChangeTest extends AbstractTestCase
      * @param string $dateString
      * @param int    $addHours
      * @param string $expected
-     *
-     * @dataProvider \Tests\CarbonImmutable\ModifyNearDSTChangeTest::dataForTransitionTests
      */
+    #[DataProvider('dataForTransitionTests')]
     public function testTransitionInDefaultTimezone($dateString, $addHours, $expected)
     {
         date_default_timezone_set('America/New_York');
diff --git a/tests/CarbonImmutable/SerializationTest.php b/tests/CarbonImmutable/SerializationTest.php
index 2db1162..0f86af2 100644
--- a/tests/CarbonImmutable/SerializationTest.php
+++ b/tests/CarbonImmutable/SerializationTest.php
@@ -16,6 +16,7 @@ namespace Tests\CarbonImmutable;
 use Carbon\CarbonImmutable as Carbon;
 use DateTimeImmutable;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use ReflectionClass;
 use ReflectionObject;
 use ReflectionProperty;
@@ -81,9 +82,8 @@ class SerializationTest extends AbstractTestCase
 
     /**
      * @param mixed $value
-     *
-     * @dataProvider \Tests\CarbonImmutable\SerializationTest::dataForTestFromUnserializedWithInvalidValue
      */
+    #[DataProvider('dataForTestFromUnserializedWithInvalidValue')]
     public function testFromUnserializedWithInvalidValue($value)
     {
         $this->expectExceptionObject(new InvalidArgumentException(
diff --git a/tests/CarbonImmutable/SettersTest.php b/tests/CarbonImmutable/SettersTest.php
index 5e786f0..5ef42ff 100644
--- a/tests/CarbonImmutable/SettersTest.php
+++ b/tests/CarbonImmutable/SettersTest.php
@@ -16,6 +16,7 @@ namespace Tests\CarbonImmutable;
 use Carbon\CarbonImmutable as Carbon;
 use DateTimeZone;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use RuntimeException;
 use Tests\AbstractTestCase;
 
@@ -342,13 +343,12 @@ class SettersTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\SettersTest::dataForTestSetTimeFromTimeString
-     *
      * @param int    $hour
      * @param int    $minute
      * @param int    $second
      * @param string $time
      */
+    #[DataProvider('dataForTestSetTimeFromTimeString')]
     public function testSetTimeFromTimeString($hour, $minute, $second, $time)
     {
         Carbon::setTestNow(Carbon::create(2016, 2, 12, 1, 2, 3));
diff --git a/tests/CarbonImmutable/StartEndOfTest.php b/tests/CarbonImmutable/StartEndOfTest.php
index 73bdf05..419d1fe 100644
--- a/tests/CarbonImmutable/StartEndOfTest.php
+++ b/tests/CarbonImmutable/StartEndOfTest.php
@@ -14,6 +14,7 @@ declare(strict_types=1);
 namespace Tests\CarbonImmutable;
 
 use Carbon\CarbonImmutable as Carbon;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class StartEndOfTest extends AbstractTestCase
@@ -377,11 +378,10 @@ class StartEndOfTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\StartEndOfTest::dataForTestStartOfQuarter
-     *
      * @param int $month
      * @param int $startOfQuarterMonth
      */
+    #[DataProvider('dataForTestStartOfQuarter')]
     public function testStartOfQuarter($month, $startOfQuarterMonth)
     {
         $dt = Carbon::create(2015, $month, 15, 1, 2, 3);
@@ -413,12 +413,11 @@ class StartEndOfTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonImmutable\StartEndOfTest::dataForTestEndOfQuarter
-     *
      * @param int $month
      * @param int $endOfQuarterMonth
      * @param int $endOfQuarterDay
      */
+    #[DataProvider('dataForTestEndOfQuarter')]
     public function testEndOfQuarter($month, $endOfQuarterMonth, $endOfQuarterDay)
     {
         $dt = Carbon::create(2015, $month, 15, 1, 2, 3);
diff --git a/tests/CarbonImmutable/WeekTest.php b/tests/CarbonImmutable/WeekTest.php
index 4c7af11..42a1e45 100644
--- a/tests/CarbonImmutable/WeekTest.php
+++ b/tests/CarbonImmutable/WeekTest.php
@@ -15,6 +15,7 @@ namespace Tests\CarbonImmutable;
 
 use Carbon\CarbonImmutable as Carbon;
 use Carbon\CarbonInterface;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class WeekTest extends AbstractTestCase
@@ -5432,9 +5433,7 @@ class WeekTest extends AbstractTestCase
         $this->assertSame(CarbonInterface::MONDAY, $date->isoWeekday());
     }
 
-    /**
-     * @dataProvider getDaysFromStartOfWeekDataProvider
-     */
+    #[DataProvider('getDaysFromStartOfWeekDataProvider')]
     public function testGetDaysFromStartOfWeek(string $locale, string $date, int $daysCount)
     {
         $this->assertSame(
@@ -5467,9 +5466,7 @@ class WeekTest extends AbstractTestCase
         ];
     }
 
-    /**
-     * @dataProvider getDaysFromStartOfWeekDataProviderExplicit
-     */
+    #[DataProvider('getDaysFromStartOfWeekDataProviderExplicit')]
     public function testGetDaysFromStartOfWeekExplicit(int $start, string $date, int $daysCount)
     {
         static $locales = [null, 'pt_BR', 'de_CH', 'ar_MA'];
diff --git a/tests/CarbonInterval/AddTest.php b/tests/CarbonInterval/AddTest.php
index 6064fff..0bcc3a2 100644
--- a/tests/CarbonInterval/AddTest.php
+++ b/tests/CarbonInterval/AddTest.php
@@ -20,6 +20,7 @@ use DateTime;
 use DateTimeImmutable;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class AddTest extends AbstractTestCase
@@ -131,12 +132,11 @@ class AddTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonInterval\AddTest::dataForAddsResults
-     *
      * @param int $base
      * @param int $increment
      * @param int $expectedResult
      */
+    #[DataProvider('dataForAddsResults')]
     public function testAddSign($base, $increment, $expectedResult)
     {
         $interval = new CarbonInterval();
diff --git a/tests/CarbonInterval/CascadeTest.php b/tests/CarbonInterval/CascadeTest.php
index fe235f5..335ed34 100644
--- a/tests/CarbonInterval/CascadeTest.php
+++ b/tests/CarbonInterval/CascadeTest.php
@@ -16,6 +16,7 @@ namespace Tests\CarbonInterval;
 use Carbon\Carbon;
 use Carbon\CarbonInterval;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class CascadeTest extends AbstractTestCase
@@ -33,9 +34,7 @@ class CascadeTest extends AbstractTestCase
         );
     }
 
-    /**
-     * @dataProvider \Tests\CarbonInterval\CascadeTest::dataForIntervalSpecs
-     */
+    #[DataProvider('dataForIntervalSpecs')]
     public function testCascadesOverflowedValues($spec, $expected)
     {
         $interval = CarbonInterval::fromString($spec)->cascade();
@@ -55,10 +54,9 @@ class CascadeTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonInterval\CascadeTest::dataForMixedSignsIntervalSpecs
-     *
      * @throws \Exception
      */
+    #[DataProvider('dataForMixedSignsIntervalSpecs')]
     public function testMixedSignsCascadesOverflowedValues($units, $expected, $expectingInversion)
     {
         $interval = new CarbonInterval(0);
@@ -218,9 +216,7 @@ class CascadeTest extends AbstractTestCase
         $this->assertSame(43012, $interval->microseconds);
     }
 
-    /**
-     * @dataProvider \Tests\CarbonInterval\CascadeTest::dataForCustomIntervalSpecs
-     */
+    #[DataProvider('dataForCustomIntervalSpecs')]
     public function testCustomCascadesOverflowedValues($spec, $expected)
     {
         $cascades = CarbonInterval::getCascadeFactors();
@@ -245,9 +241,7 @@ class CascadeTest extends AbstractTestCase
         yield ['2y 123mo 5w 6d 47h 160m 217s', '2yrs 123mos 7w 2d 1h 43m 37s'];
     }
 
-    /**
-     * @dataProvider \Tests\CarbonInterval\CascadeTest::dataForCustomIntervalSpecsLongFormat
-     */
+    #[DataProvider('dataForCustomIntervalSpecsLongFormat')]
     public function testCustomCascadesOverflowedValuesLongFormat($spec, $expected)
     {
         $cascades = CarbonInterval::getCascadeFactors();
diff --git a/tests/CarbonInterval/FromStringTest.php b/tests/CarbonInterval/FromStringTest.php
index de79a0a..5a745e1 100644
--- a/tests/CarbonInterval/FromStringTest.php
+++ b/tests/CarbonInterval/FromStringTest.php
@@ -16,16 +16,16 @@ namespace Tests\CarbonInterval;
 use Carbon\CarbonInterval;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class FromStringTest extends AbstractTestCase
 {
     /**
-     * @dataProvider \Tests\CarbonInterval\FromStringTest::dataForValidStrings
-     *
      * @param string         $string
      * @param CarbonInterval $expected
      */
+    #[DataProvider('dataForValidStrings')]
     public function testReturnsInterval($string, $expected)
     {
         $result = CarbonInterval::fromString($string);
@@ -114,11 +114,10 @@ class FromStringTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonInterval\FromStringTest::dataForInvalidStrings
-     *
      * @param string $string
      * @param string $part
      */
+    #[DataProvider('dataForInvalidStrings')]
     public function testThrowsExceptionForUnknownValues($string, $part)
     {
         $message = null;
diff --git a/tests/CarbonInterval/ParseFromLocaleTest.php b/tests/CarbonInterval/ParseFromLocaleTest.php
index 342369b..99a85d4 100644
--- a/tests/CarbonInterval/ParseFromLocaleTest.php
+++ b/tests/CarbonInterval/ParseFromLocaleTest.php
@@ -16,18 +16,18 @@ namespace Tests\CarbonInterval;
 use Carbon\CarbonInterval;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class ParseFromLocaleTest extends AbstractTestCase
 {
     /**
-     * @dataProvider \Tests\CarbonInterval\ParseFromLocaleTest::dataForValidStrings
-     *
      * @param string         $string
      * @param string         $locale
      * @param CarbonInterval $expected
      */
-    public function testReturnsInterval($string, $locale, $expected)
+    #[DataProvider('dataForValidStrings')]
+     public function testReturnsInterval($string, $locale, $expected)
     {
         $result = CarbonInterval::parseFromLocale($string, $locale);
 
@@ -112,12 +112,11 @@ class ParseFromLocaleTest extends AbstractTestCase
     }
 
     /**
-     * @dataProvider \Tests\CarbonInterval\ParseFromLocaleTest::dataForInvalidStrings
-     *
      * @param string $string
      * @param string $part
      * @param string $locale
      */
+    #[DataProvider('dataForInvalidStrings')]
     public function testThrowsExceptionForUnknownValues($string, $part, $locale)
     {
         $message = null;
diff --git a/tests/CarbonInterval/ToPeriodTest.php b/tests/CarbonInterval/ToPeriodTest.php
index 2cbf232..2fef511 100644
--- a/tests/CarbonInterval/ToPeriodTest.php
+++ b/tests/CarbonInterval/ToPeriodTest.php
@@ -17,13 +17,12 @@ use Carbon\Carbon;
 use Carbon\CarbonInterval;
 use Carbon\CarbonPeriod;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class ToPeriodTest extends AbstractTestCase
 {
-    /**
-     * @dataProvider \Tests\CarbonInterval\ToPeriodTest::dataForToPeriodParameters
-     */
+    #[DataProvider('dataForToPeriodParameters')]
     public function testConvertToDatePeriod($interval, $arguments, $expected)
     {
         $period = ([$interval, 'toPeriod'])(...$arguments);
diff --git a/tests/CarbonInterval/TotalTest.php b/tests/CarbonInterval/TotalTest.php
index 2c4ce03..a412e37 100644
--- a/tests/CarbonInterval/TotalTest.php
+++ b/tests/CarbonInterval/TotalTest.php
@@ -17,13 +17,13 @@ use Carbon\Carbon;
 use Carbon\CarbonInterval;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class TotalTest extends AbstractTestCase
 {
-    /**
-     * @dataProvider \Tests\CarbonInterval\TotalTest::dataForIntervalSpecs
-     */
+
+    #[DataProvider('dataForIntervalSpecs')]
     public function testReturnsTotalValue($spec, $unit, $expected)
     {
         $this->assertSame(
@@ -94,9 +94,8 @@ class TotalTest extends AbstractTestCase
         yield [1, CarbonInterval::hours(0)->hours(-150)->invert()];
     }
 
-    /**
-     * @dataProvider \Tests\CarbonInterval\TotalTest::dataForNegativeIntervals
-     */
+
+    #[DataProvider('dataForNegativeIntervals')]
     public function testGetNegativeTotalsViaGetters($factor, $interval)
     {
         $this->assertSame($factor * 150 * 60 * 60 * 1000 * 1000, $interval->totalMicroseconds);
diff --git a/tests/CarbonPeriod/CreateTest.php b/tests/CarbonPeriod/CreateTest.php
index 7f80812..7ac5243 100644
--- a/tests/CarbonPeriod/CreateTest.php
+++ b/tests/CarbonPeriod/CreateTest.php
@@ -25,14 +25,13 @@ use DatePeriod;
 use DateTime;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use stdClass;
 use Tests\AbstractTestCase;
 
 class CreateTest extends AbstractTestCase
 {
-    /**
-     * @dataProvider \Tests\CarbonPeriod\CreateTest::dataForIso8601String
-     */
+    #[DataProvider('dataForIso8601String')]
     public function testCreateFromIso8601String($arguments, $expected)
     {
         $periodClass = static::$periodClass;
@@ -91,9 +90,7 @@ class CreateTest extends AbstractTestCase
         $this->assertInfinite($period->getRecurrences());
     }
 
-    /**
-     * @dataProvider \Tests\CarbonPeriod\CreateTest::dataForPartialIso8601String
-     */
+    #[DataProvider('dataForPartialIso8601String')]
     public function testCreateFromPartialIso8601String($iso, $from, $to)
     {
         $periodClass = static::$periodClass;
@@ -118,9 +115,7 @@ class CreateTest extends AbstractTestCase
         yield ['2007-12-14T13:30/15:30', '2007-12-14 13:30', '2007-12-14 15:30'];
     }
 
-    /**
-     * @dataProvider \Tests\CarbonPeriod\CreateTest::dataForInvalidIso8601String
-     */
+    #[DataProvider('dataForInvalidIso8601String')]
     public function testCreateFromInvalidIso8601String($iso)
     {
         $this->expectExceptionObject(new InvalidArgumentException(
@@ -141,9 +136,7 @@ class CreateTest extends AbstractTestCase
         yield ['/'];
     }
 
-    /**
-     * @dataProvider \Tests\CarbonPeriod\CreateTest::dataForStartDateAndEndDate
-     */
+    #[DataProvider('dataForStartDateAndEndDate')]
     public function testCreateFromStartDateAndEndDate($arguments, $expected)
     {
         $periodClass = static::$periodClass;
@@ -196,9 +189,7 @@ class CreateTest extends AbstractTestCase
             ];
     }
 
-    /**
-     * @dataProvider \Tests\CarbonPeriod\CreateTest::dataForStartDateAndIntervalAndEndDate
-     */
+    #[DataProvider('dataForStartDateAndIntervalAndEndDate')]
     public function testCreateFromStartDateAndIntervalAndEndDate($arguments, $expected)
     {
         $periodClass = static::$periodClass;
@@ -257,9 +248,7 @@ class CreateTest extends AbstractTestCase
         ];
     }
 
-    /**
-     * @dataProvider \Tests\CarbonPeriod\CreateTest::dataForStartDateAndIntervalAndRecurrences
-     */
+    #[DataProvider('dataForStartDateAndIntervalAndRecurrences')]
     public function testCreateFromStartDateAndIntervalAndRecurrences($arguments, $expected)
     {
         $periodClass = static::$periodClass;
@@ -288,9 +277,7 @@ class CreateTest extends AbstractTestCase
         ];
     }
 
-    /**
-     * @dataProvider \Tests\CarbonPeriod\CreateTest::dataForStartDateAndRecurrences
-     */
+    #[DataProvider('dataForStartDateAndRecurrences')]
     public function testCreateFromStartDateAndRecurrences($arguments, $expected)
     {
         $periodClass = static::$periodClass;
@@ -345,9 +332,7 @@ class CreateTest extends AbstractTestCase
         );
     }
 
-    /**
-     * @dataProvider \Tests\CarbonPeriod\CreateTest::dataForInvalidParameters
-     */
+    #[DataProvider('dataForInvalidParameters')]
     public function testCreateFromInvalidParameters(...$arguments)
     {
         $this->expectExceptionObject(new InvalidArgumentException(
diff --git a/tests/CarbonPeriod/IteratorTest.php b/tests/CarbonPeriod/IteratorTest.php
index 62b9d25..973b0b7 100644
--- a/tests/CarbonPeriod/IteratorTest.php
+++ b/tests/CarbonPeriod/IteratorTest.php
@@ -17,6 +17,7 @@ use Carbon\Carbon;
 use Carbon\CarbonInterval;
 use Carbon\CarbonPeriod;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 use Tests\CarbonPeriod\Fixtures\CarbonPeriodFactory;
 
@@ -111,9 +112,7 @@ class IteratorTest extends AbstractTestCase
         $this->assertFalse($period->valid());
     }
 
-    /**
-     * @dataProvider dataForIterateBackwardsArguments
-     */
+    #[DataProvider('dataForIterateBackwardsArguments')]
     public function testIterateBackwards($arguments, $expected)
     {
         $periodClass = static::$periodClass;
diff --git a/tests/CarbonPeriod/ToStringTest.php b/tests/CarbonPeriod/ToStringTest.php
index 178efca..652546f 100644
--- a/tests/CarbonPeriod/ToStringTest.php
+++ b/tests/CarbonPeriod/ToStringTest.php
@@ -18,13 +18,12 @@ use Carbon\CarbonImmutable;
 use Carbon\CarbonInterval;
 use Carbon\CarbonPeriod;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class ToStringTest extends AbstractTestCase
 {
-    /**
-     * @dataProvider \Tests\CarbonPeriod\ToStringTest::dataForToString
-     */
+    #[DataProvider('dataForToString')]
     public function testToString($period, $expected)
     {
         $this->assertSame(
@@ -92,9 +91,7 @@ class ToStringTest extends AbstractTestCase
         );
     }
 
-    /**
-     * @dataProvider \Tests\CarbonPeriod\ToStringTest::dataForToIso8601String
-     */
+    #[DataProvider('dataForToIso8601String')]
     public function testToIso8601String($period, $expected)
     {
         $this->assertSame(
diff --git a/tests/CarbonTimeZone/ConversionsTest.php b/tests/CarbonTimeZone/ConversionsTest.php
index 2cbd43f..8a85774 100644
--- a/tests/CarbonTimeZone/ConversionsTest.php
+++ b/tests/CarbonTimeZone/ConversionsTest.php
@@ -18,6 +18,7 @@ use Carbon\CarbonTimeZone;
 use DateTimeZone;
 use Generator;
 use InvalidArgumentException;
+use PHPUnit\Framework\Attributes\DataProvider;
 use stdClass;
 use Tests\AbstractTestCaseWithOldNow;
 
@@ -82,9 +83,8 @@ class ConversionsTest extends AbstractTestCaseWithOldNow
      * @param string     $date
      * @param string     $expectedOffset
      * @param string|int $timezone
-     *
-     * @dataProvider \Tests\CarbonTimeZone\ConversionsTest::dataForToOffsetName
      */
+    #[DataProvider('dataForToOffsetName')]
     public function testToOffsetName($date, $expectedOffset, $timezone)
     {
         Carbon::setTestNow(Carbon::parse($date));
@@ -97,9 +97,8 @@ class ConversionsTest extends AbstractTestCaseWithOldNow
      * @param string     $date
      * @param string     $expectedOffset
      * @param string|int $timezone
-     *
-     * @dataProvider \Tests\CarbonTimeZone\ConversionsTest::dataForToOffsetName
      */
+    #[DataProvider('dataForToOffsetName')]
     public function testToOffsetNameDateAsParam($date, $expectedOffset, $timezone)
     {
         $offset = (new CarbonTimeZone($timezone))->toOffsetName(Carbon::parse($date));
diff --git a/tests/CommonTraits/MacroContextNestingTest.php b/tests/CommonTraits/MacroContextNestingTest.php
index b921778..d98a908 100644
--- a/tests/CommonTraits/MacroContextNestingTest.php
+++ b/tests/CommonTraits/MacroContextNestingTest.php
@@ -18,6 +18,7 @@ use Carbon\CarbonImmutable;
 use Carbon\CarbonInterval;
 use Carbon\CarbonPeriod;
 use Generator;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCaseWithOldNow;
 
 class MacroContextNestingTest extends AbstractTestCaseWithOldNow
@@ -31,12 +32,11 @@ class MacroContextNestingTest extends AbstractTestCaseWithOldNow
     }
 
     /**
-     * @dataProvider \Tests\CommonTraits\MacroContextNestingTest::dataForMacroableClasses
-     *
      * @param string      $class
      * @param mixed       $sample
      * @param string|null $reference
      */
+    #[DataProvider('dataForMacroableClasses')]
     public function testMacroContextNesting($class, $sample, $reference)
     {
         $macro1 = 'macro'.(mt_rand(100, 999999) * 2);
@@ -64,12 +64,11 @@ class MacroContextNestingTest extends AbstractTestCaseWithOldNow
     }
 
     /**
-     * @dataProvider \Tests\CommonTraits\MacroContextNestingTest::dataForMacroableClasses
-     *
      * @param string $class
      * @param mixed  $sample
      */
-    public function testMacroContextDetectionNesting($class, $sample)
+    #[DataProvider('dataForMacroableClasses')]
+    public function testMacroContextDetectionNesting($class, $sample, $reference)
     {
         $macro1 = 'macro'.(mt_rand(100, 999999) * 2);
         $class::macro($macro1, static function () {
diff --git a/tests/Doctrine/CarbonTypesTest.php b/tests/Doctrine/CarbonTypesTest.php
index fd7e6ad..48ac0f5 100644
--- a/tests/Doctrine/CarbonTypesTest.php
+++ b/tests/Doctrine/CarbonTypesTest.php
@@ -28,6 +28,7 @@ use Doctrine\DBAL\Platforms\MySQLPlatform;
 use Doctrine\DBAL\Types\ConversionException;
 use Doctrine\DBAL\Types\Type;
 use Exception;
+use PHPUnit\Framework\Attributes\DataProvider;
 use Tests\AbstractTestCase;
 
 class CarbonTypesTest extends AbstractTestCase
@@ -60,11 +61,10 @@ class CarbonTypesTest extends AbstractTestCase
      *
      * @param string $name
      *
-     * @dataProvider \Tests\Doctrine\CarbonTypesTest::dataForTypes
-     *
      * @throws Exception
      */
-    public function testGetSQLDeclaration(string $name)
+    #[DataProvider('dataForTypes')]
+    public function testGetSQLDeclaration(string $name, string $class, string $typeClass, bool $hintRequired)
     {
         $type = Type::getType($name);
 
@@ -135,11 +135,10 @@ class CarbonTypesTest extends AbstractTestCase
      * @param string $name
      * @param string $class
      *
-     * @dataProvider \Tests\Doctrine\CarbonTypesTest::dataForTypes
-     *
      * @throws Exception
      */
-    public function testConvertToPHPValue(string $name, string $class)
+    #[DataProvider('dataForTypes')]
+    public function testConvertToPHPValue(string $name, string $class, string $typeClass, bool $hintRequired)
     {
         $type = Type::getType($name);
 
@@ -164,11 +163,10 @@ class CarbonTypesTest extends AbstractTestCase
      * @param string $name
      * @param string $class
      *
-     * @dataProvider \Tests\Doctrine\CarbonTypesTest::dataForTypes
-     *
      * @throws Exception
      */
-    public function testConvertToPHPValueFailure(string $name, string $class, string $typeClass)
+    #[DataProvider('dataForTypes')]
+    public function testConvertToPHPValueFailure(string $name, string $class, string $typeClass, bool $hintRequired)
     {
         $conversion = version_compare(self::getDbalVersion(), '4.0.0', '>=')
             ? "to \"$typeClass\" as an error was triggered by the unserialization: "
@@ -186,11 +184,10 @@ class CarbonTypesTest extends AbstractTestCase
      *
      * @param string $name
      *
-     * @dataProvider \Tests\Doctrine\CarbonTypesTest::dataForTypes
-     *
      * @throws Exception
      */
-    public function testConvertToDatabaseValue(string $name)
+    #[DataProvider('dataForTypes')]
+    public function testConvertToDatabaseValue(string $name, string $class, string $typeClass, bool $hintRequired)
     {
         $type = Type::getType($name);
 
@@ -206,11 +203,10 @@ class CarbonTypesTest extends AbstractTestCase
      *
      * @param string $name
      *
-     * @dataProvider \Tests\Doctrine\CarbonTypesTest::dataForTypes
-     *
      * @throws Exception
      */
-    public function testConvertToDatabaseValueFailure(string $name, string $class, string $typeClass)
+    #[DataProvider('dataForTypes')]
+    public function testConvertToDatabaseValueFailure(string $name, string $class, string $typeClass, bool $hintRequired)
     {
         $quote = class_exists('Doctrine\\DBAL\\Version') ? "'" : '';
         $conversion = version_compare(self::getDbalVersion(), '4.0.0', '>=')
@@ -232,10 +228,9 @@ class CarbonTypesTest extends AbstractTestCase
      * @param string $typeClass
      * @param bool   $hintRequired
      *
-     * @dataProvider \Tests\Doctrine\CarbonTypesTest::dataForTypes
-     *
      * @throws Exception
      */
+    #[DataProvider('dataForTypes')]
     public function testRequiresSQLCommentHint(string $name, string $class, string $typeClass, bool $hintRequired)
     {
         if (version_compare(self::getDbalVersion(), '4.0.0', '>=')) {
diff --git a/tests/Laravel/ServiceProviderTest.php b/tests/Laravel/ServiceProviderTest.php
index c9d3100..ff289a2 100644
--- a/tests/Laravel/ServiceProviderTest.php
+++ b/tests/Laravel/ServiceProviderTest.php
@@ -23,6 +23,7 @@ use Illuminate\Events\Dispatcher;
 use Illuminate\Events\EventDispatcher;
 use Illuminate\Support\Carbon as SupportCarbon;
 use Illuminate\Support\Facades\Date;
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 use stdClass;
 
@@ -42,9 +43,7 @@ class ServiceProviderTest extends TestCase
         yield [new EventDispatcher()];
     }
 
-    /**
-     * @dataProvider \Tests\Laravel\ServiceProviderTest::dataForDispatchers
-     */
+    #[DataProvider('dataForDispatchers')]
     public function testBoot($dispatcher)
     {
         // Reset language
