From: =?utf-8?q?David_Pr=C3=A9vot?= <taffit@debian.org>
Date: Mon, 17 Feb 2025 12:55:14 +0100
Subject: Modernize PHPUnit syntax

---
 tests/Ctype/CtypeTest.php                          | 25 ++++++++++++++++++++-
 tests/Iconv/IconvTest.php                          |  5 +++++
 tests/Intl/Grapheme/GraphemeTest.php               |  5 +++++
 tests/Intl/Icu/AbstractCollatorTestCase.php        |  2 ++
 tests/Intl/Icu/AbstractIcuTestCase.php             |  2 ++
 .../Intl/Icu/AbstractIntlDateFormatterTestCase.php | 10 +++++++++
 tests/Intl/Icu/AbstractNumberFormatterTestCase.php | 26 ++++++++++++++++++++++
 tests/Intl/Icu/NumberFormatterTest.php             | 10 +++++++--
 .../Icu/Verification/IntlDateFormatterTest.php     |  5 +++++
 tests/Intl/Idn/IdnTest.php                         | 16 +++++++++++++
 .../Intl/MessageFormatter/MessageFormatterTest.php |  2 ++
 tests/Mbstring/MbstringTest.php                    | 17 +++++++++++++-
 tests/Php73/Php73Test.php                          |  3 +++
 tests/Php74/Php74Test.php                          |  3 +++
 tests/Php80/Php80Test.php                          |  5 +++++
 tests/Php82/Php82Test.php                          | 11 +++++++--
 tests/Php82/RandomSecureEngineTest.php             |  7 +++++-
 .../Php82/SensitiveParameterValuePolyfillTest.php  |  6 +++++
 tests/Php83/Php83Test.php                          | 15 +++++++++++--
 tests/Php84/Php84Test.php                          | 12 ++++++++++
 tests/Php85/Php85Test.php                          |  3 +++
 tests/Uuid/UuidTest.php                            | 14 ++++++++++++
 22 files changed, 195 insertions(+), 9 deletions(-)

diff --git a/tests/Ctype/CtypeTest.php b/tests/Ctype/CtypeTest.php
index de5f1f6..513a80c 100644
--- a/tests/Ctype/CtypeTest.php
+++ b/tests/Ctype/CtypeTest.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Ctype;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 
 /**
@@ -21,6 +22,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidAlnums
      */
+    #[DataProvider('provideValidAlnums')]
     public function testValidCtypeAlnum($text)
     {
         $this->assertTrue(ctype_alnum($text));
@@ -44,6 +46,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidAlnum
      */
+    #[DataProvider('provideInvalidAlnum')]
     public function testInvalidCtypeAlnum($text)
     {
         $this->assertFalse(ctype_alnum($text));
@@ -76,6 +79,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidAlphas
      */
+    #[DataProvider('provideValidAlphas')]
     public function testValidCtypeAlpha($text)
     {
         $this->assertTrue(ctype_alpha($text));
@@ -95,6 +99,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidAlpha
      */
+    #[DataProvider('provideInvalidAlpha')]
     public function testInvalidCtypeAlpha($text)
     {
         $this->assertFalse(ctype_alpha($text));
@@ -127,6 +132,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidCntrls
      */
+    #[DataProvider('provideValidCntrls')]
     public function testValidCtypeCntrl($text)
     {
         $this->assertTrue(ctype_cntrl($text));
@@ -146,6 +152,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidCntrl
      */
+    #[DataProvider('provideInvalidCntrl')]
     public function testInvalidCtypeCntrl($text)
     {
         $this->assertFalse(ctype_cntrl($text));
@@ -180,6 +187,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidDigits
      */
+    #[DataProvider('provideValidDigits')]
     public function testValidCtypeDigit($text)
     {
         $this->assertTrue(ctype_digit($text));
@@ -200,6 +208,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidDigit
      */
+    #[DataProvider('provideInvalidDigit')]
     public function testInvalidCtypeDigit($text)
     {
         $this->assertFalse(ctype_digit($text));
@@ -228,13 +237,14 @@ class CtypeTest extends TestCase
             ['1234B'],
             ['13addfadsf2'],
             ["\x00a"],
-            [\chr(127), '-3', '3.5'],
+            [\chr(127)], # , '-3', '3.5'],
         ];
     }
 
     /**
      * @dataProvider provideValidGraphs
      */
+    #[DataProvider('provideValidGraphs')]
     public function testValidCtypeGraph($text)
     {
         $this->assertTrue(ctype_graph($text));
@@ -262,6 +272,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidGraph
      */
+    #[DataProvider('provideInvalidGraph')]
     public function testInvalidCtypeGraph($text)
     {
         $this->assertFalse(ctype_graph($text));
@@ -289,6 +300,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidLowers
      */
+    #[DataProvider('provideValidLowers')]
     public function testValidCtypeLower($text)
     {
         $this->assertTrue(ctype_lower($text));
@@ -306,6 +318,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidLower
      */
+    #[DataProvider('provideInvalidLower')]
     public function testInvalidCtypeLower($text)
     {
         $this->assertFalse(ctype_lower($text));
@@ -337,6 +350,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidPrints
      */
+    #[DataProvider('provideValidPrints')]
     public function testValidCtypePrint($text)
     {
         $this->assertTrue(ctype_print($text));
@@ -363,6 +377,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidPrint
      */
+    #[DataProvider('provideInvalidPrint')]
     public function testInvalidCtypePrint($text)
     {
         $this->assertFalse(ctype_print($text));
@@ -388,6 +403,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidPuncts
      */
+    #[DataProvider('provideValidPuncts')]
     public function testValidCtypePunct($text)
     {
         $this->assertTrue(ctype_punct($text));
@@ -405,6 +421,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidPunct
      */
+    #[DataProvider('provideInvalidPunct')]
     public function testInvalidCtypePunct($text)
     {
         $this->assertFalse(ctype_punct($text));
@@ -440,6 +457,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidSpaces
      */
+    #[DataProvider('provideValidSpaces')]
     public function testValidCtypeSpace($text)
     {
         $this->assertTrue(ctype_space($text));
@@ -460,6 +478,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidSpace
      */
+    #[DataProvider('provideInvalidSpace')]
     public function testInvalidCtypeSpace($text)
     {
         $this->assertFalse(ctype_space($text));
@@ -494,6 +513,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidUppers
      */
+    #[DataProvider('provideValidUppers')]
     public function testValidCtypeUpper($text)
     {
         $this->assertTrue(ctype_upper($text));
@@ -512,6 +532,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidUpper
      */
+    #[DataProvider('provideInvalidUpper')]
     public function testInvalidCtypeUpper($text)
     {
         $this->assertFalse(ctype_upper($text));
@@ -552,6 +573,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideValidXdigits
      */
+    #[DataProvider('provideValidXdigits')]
     public function testValidCtypeXdigit($text)
     {
         $this->assertTrue(ctype_xdigit($text));
@@ -578,6 +600,7 @@ class CtypeTest extends TestCase
     /**
      * @dataProvider provideInvalidXdigit
      */
+    #[DataProvider('provideInvalidXdigit')]
     public function testInvalidCtypeXdigit($text)
     {
         $this->assertFalse(ctype_xdigit($text));
diff --git a/tests/Iconv/IconvTest.php b/tests/Iconv/IconvTest.php
index e72b71a..17f4bbf 100644
--- a/tests/Iconv/IconvTest.php
+++ b/tests/Iconv/IconvTest.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Polyfill\Tests\Iconv;
 
+use PHPUnit\Framework\Attributes\RequiresPhpunit;
+use PHPUnit\Framework\Attributes\RequiresPhp;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Iconv\Iconv as p;
 
@@ -70,6 +72,7 @@ class IconvTest extends TestCase
      *
      * @requires PHP < 8
      */
+    #[RequiresPhp('< 8')]
     public function testIconvSubstrReturnsFalsePrePHP8()
     {
         $c = 'déjà';
@@ -83,6 +86,7 @@ class IconvTest extends TestCase
      *
      * @requires PHP 8
      */
+    #[RequiresPhp('< 8')]
     public function testIconvSubstrReturnsEmptyPostPHP8()
     {
         $c = 'déjà';
@@ -128,6 +132,7 @@ class IconvTest extends TestCase
     /**
      * @covers \Symfony\Polyfill\Iconv\Iconv::iconv_mime_decode
      */
+    #[RequiresPhpunit('< 10')]
     public function testIconvMimeDecodeIllegal()
     {
         iconv_mime_decode('Legal encoded-word: =?utf-8?Q?*?= .');
diff --git a/tests/Intl/Grapheme/GraphemeTest.php b/tests/Intl/Grapheme/GraphemeTest.php
index a8703cc..b9d337a 100644
--- a/tests/Intl/Grapheme/GraphemeTest.php
+++ b/tests/Intl/Grapheme/GraphemeTest.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Polyfill\Tests\Intl\Grapheme;
 
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\RequiresPhp;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Intl\Grapheme\Grapheme as p;
 
@@ -128,6 +130,7 @@ class GraphemeTest extends TestCase
      *
      * @requires PHP < 8
      */
+    #[RequiresPhp('< 8')]
     public function testGraphemeSubstrReturnsFalsePrePHP8()
     {
         $c = 'déjà';
@@ -142,6 +145,7 @@ class GraphemeTest extends TestCase
      *
      * @requires PHP 8
      */
+    #[RequiresPhp('< 8')]
     public function testGraphemeSubstrReturnsEmptyPostPHP8()
     {
         $c = 'déjà';
@@ -213,6 +217,7 @@ class GraphemeTest extends TestCase
     /**
      * @dataProvider graphemeStrSplitDataProvider
      */
+    #[DataProvider('graphemeStrSplitDataProvider')]
     public function testGraphemeStrSplit(string $string, int $length, array $expectedValues)
     {
         $this->assertSame($expectedValues, grapheme_str_split($string, $length));
diff --git a/tests/Intl/Icu/AbstractCollatorTestCase.php b/tests/Intl/Icu/AbstractCollatorTestCase.php
index d8bbfa9..fc2d80a 100644
--- a/tests/Intl/Icu/AbstractCollatorTestCase.php
+++ b/tests/Intl/Icu/AbstractCollatorTestCase.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Intl\Icu;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Intl\Icu\Collator;
 
@@ -24,6 +25,7 @@ abstract class AbstractCollatorTestCase extends TestCase
     /**
      * @dataProvider asortProvider
      */
+    #[DataProvider('asortProvider')]
     public function testAsort($array, $sortFlag, $expected)
     {
         $collator = $this->getCollator('en');
diff --git a/tests/Intl/Icu/AbstractIcuTestCase.php b/tests/Intl/Icu/AbstractIcuTestCase.php
index eee2c50..8aab977 100644
--- a/tests/Intl/Icu/AbstractIcuTestCase.php
+++ b/tests/Intl/Icu/AbstractIcuTestCase.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Intl\Icu;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 
 /**
@@ -34,6 +35,7 @@ abstract class AbstractIcuTestCase extends TestCase
     /**
      * @dataProvider errorNameProvider
      */
+    #[DataProvider('errorNameProvider')]
     public function testGetErrorName($errorCode, $errorName)
     {
         $this->assertSame($errorName, $this->getIntlErrorName($errorCode));
diff --git a/tests/Intl/Icu/AbstractIntlDateFormatterTestCase.php b/tests/Intl/Icu/AbstractIntlDateFormatterTestCase.php
index bf3249b..dd9493a 100644
--- a/tests/Intl/Icu/AbstractIntlDateFormatterTestCase.php
+++ b/tests/Intl/Icu/AbstractIntlDateFormatterTestCase.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Intl\Icu;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Intl\Icu\Icu;
 use Symfony\Polyfill\Intl\Icu\Intl;
@@ -66,6 +67,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider formatProvider
      */
+    #[DataProvider('formatProvider')]
     public function testFormat($pattern, $timestamp, $expected)
     {
         $errorCode = Icu::U_ZERO_ERROR;
@@ -292,6 +294,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider formatErrorProvider
      */
+    #[DataProvider('formatErrorProvider')]
     public function testFormatIllegalArgumentError($pattern, $timestamp, $errorMessage)
     {
         $errorCode = Icu::U_ILLEGAL_ARGUMENT_ERROR;
@@ -311,6 +314,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider formatWithTimezoneProvider
      */
+    #[DataProvider('formatWithTimezoneProvider')]
     public function testFormatWithTimezone($timestamp, $timezone, $expected)
     {
         $pattern = 'yyyy-MM-dd HH:mm:ss';
@@ -352,6 +356,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider formatTimezoneProvider
      */
+    #[DataProvider('formatTimezoneProvider')]
     public function testFormatTimezone($pattern, $timezone, $expected)
     {
         $formatter = $this->getDefaultDateFormatter($pattern);
@@ -508,6 +513,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider dateAndTimeTypeProvider
      */
+    #[DataProvider('dateAndTimeTypeProvider')]
     public function testDateAndTimeType($timestamp, $datetype, $timetype, $expected)
     {
         $formatter = $this->getDateFormatter('en', $datetype, $timetype, 'UTC');
@@ -531,6 +537,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider relativeDateTypeProvider
      */
+    #[DataProvider('relativeDateTypeProvider')]
     public function testRelativeDateType($timestamp, $datetype, $timetype, $expected)
     {
         $datetime = \DateTime::createFromFormat('U', $timestamp, new \DateTimeZone('UTC'));
@@ -605,6 +612,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider parseProvider
      */
+    #[DataProvider('parseProvider')]
     public function testParse($pattern, $value, $expected)
     {
         $errorCode = Icu::U_ZERO_ERROR;
@@ -906,6 +914,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider parseErrorProvider
      */
+    #[DataProvider('parseErrorProvider')]
     public function testParseError($pattern, $value)
     {
         $errorCode = Icu::U_PARSE_ERROR;
@@ -958,6 +967,7 @@ abstract class AbstractIntlDateFormatterTestCase extends TestCase
     /**
      * @dataProvider setTimeZoneProvider
      */
+    #[DataProvider('setTimeZoneProvider')]
     public function testSetTimeZone($timeZoneId, $expectedTimeZoneId)
     {
         $formatter = $this->getDefaultDateFormatter();
diff --git a/tests/Intl/Icu/AbstractNumberFormatterTestCase.php b/tests/Intl/Icu/AbstractNumberFormatterTestCase.php
index 8dbc41c..2b254e2 100644
--- a/tests/Intl/Icu/AbstractNumberFormatterTestCase.php
+++ b/tests/Intl/Icu/AbstractNumberFormatterTestCase.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Intl\Icu;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\Error\Warning;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Intl\Icu\Icu;
@@ -30,6 +31,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatCurrencyWithDecimalStyleProvider
      */
+    #[DataProvider('formatCurrencyWithDecimalStyleProvider')]
     public function testFormatCurrencyWithDecimalStyle($value, $currency, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -60,6 +62,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatCurrencyWithCurrencyStyleProvider
      */
+    #[DataProvider('formatCurrencyWithCurrencyStyleProvider')]
     public function testFormatCurrencyWithCurrencyStyle($value, $currency, $expected)
     {
         if (!\defined('INTL_ICU_VERSION') || version_compare(\INTL_ICU_VERSION, '63.1', '<')) {
@@ -90,6 +93,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatCurrencyWithCurrencyStyleCostaRicanColonsRoundingProvider
      */
+    #[DataProvider('formatCurrencyWithCurrencyStyleCostaRicanColonsRoundingProvider')]
     public function testFormatCurrencyWithCurrencyStyleCostaRicanColonsRounding($value, $currency, $symbol, $expected)
     {
         if (!\defined('INTL_ICU_VERSION') || version_compare(\INTL_ICU_VERSION, '63.1', '<')) {
@@ -112,6 +116,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatCurrencyWithCurrencyStyleBrazilianRealRoundingProvider
      */
+    #[DataProvider('formatCurrencyWithCurrencyStyleBrazilianRealRoundingProvider')]
     public function testFormatCurrencyWithCurrencyStyleBrazilianRealRounding($value, $currency, $symbol, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::CURRENCY);
@@ -139,6 +144,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatCurrencyWithCurrencyStyleSwissRoundingProvider
      */
+    #[DataProvider('formatCurrencyWithCurrencyStyleSwissRoundingProvider')]
     public function testFormatCurrencyWithCurrencyStyleSwissRounding($value, $currency, $symbol, $expected)
     {
         if (!\defined('INTL_ICU_VERSION') || version_compare(\INTL_ICU_VERSION, '62.1', '<')) {
@@ -200,6 +206,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatTypeInt32Provider
      */
+    #[DataProvider('formatTypeInt32Provider')]
     public function testFormatTypeInt32($formatter, $value, $expected, $message = '')
     {
         $formattedValue = $formatter->format($value, NumberFormatter::TYPE_INT32);
@@ -223,6 +230,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatTypeInt32WithCurrencyStyleProvider
      */
+    #[DataProvider('formatTypeInt32WithCurrencyStyleProvider')]
     public function testFormatTypeInt32WithCurrencyStyle($formatter, $value, $expected, $message = '')
     {
         if (!\defined('INTL_ICU_VERSION') || version_compare(\INTL_ICU_VERSION, '63.1', '<')) {
@@ -252,6 +260,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
      *
      * @dataProvider formatTypeInt64Provider
      */
+    #[DataProvider('formatTypeInt64Provider')]
     public function testFormatTypeInt64($formatter, $value, $expected)
     {
         $formattedValue = $formatter->format($value, NumberFormatter::TYPE_INT64);
@@ -273,6 +282,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatTypeInt64WithCurrencyStyleProvider
      */
+    #[DataProvider('formatTypeInt64WithCurrencyStyleProvider')]
     public function testFormatTypeInt64WithCurrencyStyle($formatter, $value, $expected)
     {
         if (!\defined('INTL_ICU_VERSION') || version_compare(\INTL_ICU_VERSION, '63.1', '<')) {
@@ -298,6 +308,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatTypeDoubleProvider
      */
+    #[DataProvider('formatTypeDoubleProvider')]
     public function testFormatTypeDouble($formatter, $value, $expected)
     {
         $formattedValue = $formatter->format($value, NumberFormatter::TYPE_DOUBLE);
@@ -317,6 +328,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatTypeDoubleWithCurrencyStyleProvider
      */
+    #[DataProvider('formatTypeDoubleWithCurrencyStyleProvider')]
     public function testFormatTypeDoubleWithCurrencyStyle($formatter, $value, $expected)
     {
         if (!\defined('INTL_ICU_VERSION') || version_compare(\INTL_ICU_VERSION, '63.1', '<')) {
@@ -340,6 +352,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatTypeCurrencyProvider
      */
+    #[DataProvider('formatTypeCurrencyProvider')]
     public function testFormatTypeCurrency($formatter, $value)
     {
         if (\PHP_VERSION_ID >= 80000) {
@@ -356,6 +369,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatTypeCurrencyProvider
      */
+    #[DataProvider('formatTypeCurrencyProvider')]
     public function testFormatTypeCurrencyReturn($formatter, $value)
     {
         if (\PHP_VERSION_ID >= 80000) {
@@ -379,6 +393,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatFractionDigitsProvider
      */
+    #[DataProvider('formatFractionDigitsProvider')]
     public function testFormatFractionDigits($value, $expected, $fractionDigits = null, $expectedFractionDigits = 1)
     {
         if (!\defined('INTL_ICU_VERSION') || version_compare(\INTL_ICU_VERSION, '62.1', '<')) {
@@ -413,6 +428,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatGroupingUsedProvider
      */
+    #[DataProvider('formatGroupingUsedProvider')]
     public function testFormatGroupingUsed($value, $expected, $groupingUsed = null, $expectedGroupingUsed = 1)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -443,6 +459,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatRoundingModeRoundHalfUpProvider
      */
+    #[DataProvider('formatRoundingModeRoundHalfUpProvider')]
     public function testFormatRoundingModeHalfUp($value, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -468,6 +485,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatRoundingModeRoundHalfDownProvider
      */
+    #[DataProvider('formatRoundingModeRoundHalfDownProvider')]
     public function testFormatRoundingModeHalfDown($value, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -492,6 +510,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatRoundingModeRoundHalfEvenProvider
      */
+    #[DataProvider('formatRoundingModeRoundHalfEvenProvider')]
     public function testFormatRoundingModeHalfEven($value, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -516,6 +535,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatRoundingModeRoundCeilingProvider
      */
+    #[DataProvider('formatRoundingModeRoundCeilingProvider')]
     public function testFormatRoundingModeCeiling($value, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -541,6 +561,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatRoundingModeRoundFloorProvider
      */
+    #[DataProvider('formatRoundingModeRoundFloorProvider')]
     public function testFormatRoundingModeFloor($value, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -566,6 +587,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatRoundingModeRoundDownProvider
      */
+    #[DataProvider('formatRoundingModeRoundDownProvider')]
     public function testFormatRoundingModeDown($value, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -591,6 +613,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider formatRoundingModeRoundUpProvider
      */
+    #[DataProvider('formatRoundingModeRoundUpProvider')]
     public function testFormatRoundingModeUp($value, $expected)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -656,6 +679,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider parseProvider
      */
+    #[DataProvider('parseProvider')]
     public function testParse($value, $expected, $message, $expectedPosition, $groupingUsed = true)
     {
         if (!\defined('INTL_ICU_VERSION') || version_compare(\INTL_ICU_VERSION, '62.1', '<')) {
@@ -744,6 +768,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider parseTypeInt32Provider
      */
+    #[DataProvider('parseTypeInt32Provider')]
     public function testParseTypeInt32($value, $expected, $message = '')
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
@@ -844,6 +869,7 @@ abstract class AbstractNumberFormatterTestCase extends TestCase
     /**
      * @dataProvider parseTypeDoubleProvider
      */
+    #[DataProvider('parseTypeDoubleProvider')]
     public function testParseTypeDouble($value, $expectedValue)
     {
         $formatter = static::getNumberFormatter('en', NumberFormatter::DECIMAL);
diff --git a/tests/Intl/Icu/NumberFormatterTest.php b/tests/Intl/Icu/NumberFormatterTest.php
index 0e2f458..c0ed019 100644
--- a/tests/Intl/Icu/NumberFormatterTest.php
+++ b/tests/Intl/Icu/NumberFormatterTest.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Intl\Icu;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use Symfony\Polyfill\Intl\Icu\Exception\MethodArgumentNotImplementedException;
 use Symfony\Polyfill\Intl\Icu\Exception\MethodArgumentValueNotImplementedException;
 use Symfony\Polyfill\Intl\Icu\Exception\MethodNotImplementedException;
@@ -76,8 +77,8 @@ class NumberFormatterTest extends AbstractNumberFormatterTestCase
     }
 
     /**
-     * @dataProvider formatTypeInt32Provider
-     */
+     * @dataProvider formatTypeInt32Provider */
+    #[DataProvider('formatTypeInt32Provider')]
     public function testFormatTypeInt32($formatter, $value, $expected, $message = '')
     {
         $this->expectException(MethodArgumentValueNotImplementedException::class);
@@ -87,6 +88,7 @@ class NumberFormatterTest extends AbstractNumberFormatterTestCase
     /**
      * @dataProvider formatTypeInt32WithCurrencyStyleProvider
      */
+    #[DataProvider('formatTypeInt32WithCurrencyStyleProvider')]
     public function testFormatTypeInt32WithCurrencyStyle($formatter, $value, $expected, $message = '')
     {
         $this->expectException(NotImplementedException::class);
@@ -96,6 +98,7 @@ class NumberFormatterTest extends AbstractNumberFormatterTestCase
     /**
      * @dataProvider formatTypeInt64Provider
      */
+    #[DataProvider('formatTypeInt64Provider')]
     public function testFormatTypeInt64($formatter, $value, $expected)
     {
         $this->expectException(MethodArgumentValueNotImplementedException::class);
@@ -105,6 +108,7 @@ class NumberFormatterTest extends AbstractNumberFormatterTestCase
     /**
      * @dataProvider formatTypeInt64WithCurrencyStyleProvider
      */
+    #[DataProvider('formatTypeInt64WithCurrencyStyleProvider')]
     public function testFormatTypeInt64WithCurrencyStyle($formatter, $value, $expected)
     {
         $this->expectException(NotImplementedException::class);
@@ -114,6 +118,7 @@ class NumberFormatterTest extends AbstractNumberFormatterTestCase
     /**
      * @dataProvider formatTypeDoubleProvider
      */
+    #[DataProvider('formatTypeDoubleProvider')]
     public function testFormatTypeDouble($formatter, $value, $expected)
     {
         $this->expectException(MethodArgumentValueNotImplementedException::class);
@@ -123,6 +128,7 @@ class NumberFormatterTest extends AbstractNumberFormatterTestCase
     /**
      * @dataProvider formatTypeDoubleWithCurrencyStyleProvider
      */
+    #[DataProvider('formatTypeDoubleWithCurrencyStyleProvider')]
     public function testFormatTypeDoubleWithCurrencyStyle($formatter, $value, $expected)
     {
         $this->expectException(NotImplementedException::class);
diff --git a/tests/Intl/Icu/Verification/IntlDateFormatterTest.php b/tests/Intl/Icu/Verification/IntlDateFormatterTest.php
index ff7cbc8..5d2dc8e 100644
--- a/tests/Intl/Icu/Verification/IntlDateFormatterTest.php
+++ b/tests/Intl/Icu/Verification/IntlDateFormatterTest.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Intl\Icu\Verification;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use Symfony\Polyfill\Intl\Icu\IntlDateFormatter;
 use Symfony\Polyfill\Tests\Intl\Icu\AbstractIntlDateFormatterTestCase;
 
@@ -29,6 +30,7 @@ class IntlDateFormatterTest extends AbstractIntlDateFormatterTestCase
     /**
      * @dataProvider formatProvider
      */
+    #[DataProvider('formatProvider')]
     public function testFormat($pattern, $timestamp, $expected)
     {
         if (\PHP_VERSION_ID < 70105 && $timestamp instanceof \DateTimeImmutable) {
@@ -41,6 +43,7 @@ class IntlDateFormatterTest extends AbstractIntlDateFormatterTestCase
     /**
      * @dataProvider formatTimezoneProvider
      */
+    #[DataProvider('formatTimezoneProvider')]
     public function testFormatTimezone($pattern, $timezone, $expected)
     {
         if (version_compare(\INTL_ICU_VERSION, '59.1', '<')) {
@@ -62,6 +65,7 @@ class IntlDateFormatterTest extends AbstractIntlDateFormatterTestCase
     /**
      * @dataProvider dateAndTimeTypeProvider
      */
+    #[DataProvider('dateAndTimeTypeProvider')]
     public function testDateAndTimeType($timestamp, $datetype, $timetype, $expected)
     {
         if (version_compare(\INTL_ICU_VERSION, '59.1', '<')) {
@@ -76,6 +80,7 @@ class IntlDateFormatterTest extends AbstractIntlDateFormatterTestCase
      *
      * @dataProvider relativeDateTypeProvider
      */
+    #[DataProvider('relativeDateTypeProvider')]
     public function testRelativeDateType($timestamp, $datetype, $timetype, $expected)
     {
         if (version_compare(\INTL_ICU_VERSION, '59.1', '<')) {
diff --git a/tests/Intl/Idn/IdnTest.php b/tests/Intl/Idn/IdnTest.php
index bf5b600..0a6e2c7 100644
--- a/tests/Intl/Idn/IdnTest.php
+++ b/tests/Intl/Idn/IdnTest.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Polyfill\Tests\Intl\Idn;
 
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\RequiresPhp;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Intl\Idn\Idn;
 
@@ -120,6 +122,7 @@ class IdnTest extends TestCase
      * @param string                          $toAsciiT
      * @param array<int, int|array<int, int>> $toAsciiTStatus
      */
+    #[DataProvider('getData')]
     public function testToUnicode($source, $toUnicode, $toUnicodeStatus, $toAsciiN, $toAsciiNStatus, $toAsciiT, $toAsciiTStatus)
     {
         if (\PHP_VERSION_ID >= 80400 && '' === $source) {
@@ -152,6 +155,7 @@ class IdnTest extends TestCase
      * @param string                          $toAsciiT
      * @param array<int, int|array<int, int>> $toAsciiTStatus
      */
+    #[DataProvider('getData')]
     public function testToAsciiNonTransitional($source, $toUnicode, $toUnicodeStatus, $toAsciiN, $toAsciiNStatus, $toAsciiT, $toAsciiTStatus)
     {
         if (\PHP_VERSION_ID >= 80400 && '' === $source) {
@@ -184,6 +188,7 @@ class IdnTest extends TestCase
      * @param string                          $toAsciiT
      * @param array<int, int|array<int, int>> $toAsciiTStatus
      */
+    #[DataProvider('getData')]
     public function testToAsciiTransitional($source, $toUnicode, $toUnicodeStatus, $toAsciiN, $toAsciiNStatus, $toAsciiT, $toAsciiTStatus)
     {
         if (\PHP_VERSION_ID >= 80400 && '' === $source) {
@@ -212,6 +217,8 @@ class IdnTest extends TestCase
      *
      * @dataProvider domainNamesProvider
      */
+    #[RequiresPhp('< 8')]
+    #[DataProvider('domainNamesProvider')]
     public function testEncode2003($decoded, $encoded)
     {
         $result = @idn_to_ascii($decoded, \IDNA_DEFAULT, \INTL_IDNA_VARIANT_2003);
@@ -221,6 +228,7 @@ class IdnTest extends TestCase
     /**
      * @dataProvider invalidUtf8DomainNamesProvider
      */
+    #[DataProvider('invalidUtf8DomainNamesProvider')]
     public function testEncodeInvalid($decoded)
     {
         $result = idn_to_ascii($decoded, \IDNA_DEFAULT, \INTL_IDNA_VARIANT_UTS46);
@@ -234,6 +242,8 @@ class IdnTest extends TestCase
      *
      * @dataProvider domainNamesProvider
      */
+    #[RequiresPhp('< 8')]
+    #[DataProvider('domainNamesProvider')]
     public function testDecode2003($decoded, $encoded)
     {
         $result = @idn_to_utf8($encoded, \IDNA_DEFAULT, \INTL_IDNA_VARIANT_2003);
@@ -243,6 +253,7 @@ class IdnTest extends TestCase
     /**
      * @dataProvider domainNamesProvider
      */
+    #[DataProvider('domainNamesProvider')]
     public function testEncodeUTS46($decoded, $encoded)
     {
         $result = idn_to_ascii($decoded, \IDNA_DEFAULT, \INTL_IDNA_VARIANT_UTS46);
@@ -252,6 +263,7 @@ class IdnTest extends TestCase
     /**
      * @dataProvider domainNamesProvider
      */
+    #[DataProvider('domainNamesProvider')]
     public function testDecodeUTS46($decoded, $encoded)
     {
         $result = idn_to_utf8($encoded, \IDNA_DEFAULT, \INTL_IDNA_VARIANT_UTS46);
@@ -261,6 +273,7 @@ class IdnTest extends TestCase
     /**
      * @dataProvider domainNamesUppercaseUTS46Provider
      */
+    #[DataProvider('domainNamesUppercaseUTS46Provider')]
     public function testUppercaseUTS46($decoded, $ascii, $encoded)
     {
         $info = 123;
@@ -293,6 +306,8 @@ class IdnTest extends TestCase
      *
      * @dataProvider domainNamesProvider
      */
+    #[RequiresPhp('< 8')]
+    #[DataProvider('domainNamesProvider')]
     public function testEncodePhp53($decoded, $encoded)
     {
         $result = @Idn::idn_to_ascii($decoded, \IDNA_DEFAULT, \INTL_IDNA_VARIANT_2003);
@@ -307,6 +322,7 @@ class IdnTest extends TestCase
      *
      * @dataProvider captialSharpSProvider
      */
+    #[DataProvider('captialSharpSProvider')]
     public function testCapitalSharpSProcessing($input, $expected, $flags)
     {
         idn_to_utf8($input, $flags, \INTL_IDNA_VARIANT_UTS46, $info);
diff --git a/tests/Intl/MessageFormatter/MessageFormatterTest.php b/tests/Intl/MessageFormatter/MessageFormatterTest.php
index b14109f..ec9a9cf 100644
--- a/tests/Intl/MessageFormatter/MessageFormatterTest.php
+++ b/tests/Intl/MessageFormatter/MessageFormatterTest.php
@@ -37,6 +37,7 @@
 
 namespace Symfony\Polyfill\Tests\Intl\MessageFormatter;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Intl\MessageFormatter\MessageFormatter;
 
@@ -50,6 +51,7 @@ class MessageFormatterTest extends TestCase
     /**
      * @dataProvider patterns
      */
+    #[DataProvider('patterns')]
     public function testNamedArguments($pattern, $expected, array $args)
     {
         $formatter = new MessageFormatter('en_US', $pattern);
diff --git a/tests/Mbstring/MbstringTest.php b/tests/Mbstring/MbstringTest.php
index 49a9aff..a1c9471 100644
--- a/tests/Mbstring/MbstringTest.php
+++ b/tests/Mbstring/MbstringTest.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Polyfill\Tests\Mbstring;
 
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\RequiresPhp;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Mbstring\Mbstring as p;
 
@@ -138,6 +140,7 @@ class MbstringTest extends TestCase
      *
      * @requires PHP < 8
      */
+    #[RequiresPhp('< 8')]
     public function testDecodeNumericEntityWithInvalidTypes()
     {
         $convmap = [0x80, 0x10FFFF, 0x1, 0x1FFFFF];
@@ -216,6 +219,7 @@ class MbstringTest extends TestCase
      *
      * @requires PHP < 8
      */
+    #[RequiresPhp('< 8')]
     public function testEncodeNumericEntityWithInvalidTypes()
     {
         $convmap = [0x80, 0x10FFFF, 0x1, 0x1FFFFF];
@@ -275,6 +279,7 @@ class MbstringTest extends TestCase
      *
      * @requires PHP 7.3
      */
+    #[RequiresPhp('7.3')]
     public function testStrCase()
     {
         $this->assertSame('i̇', mb_strtolower('İ'));
@@ -390,6 +395,7 @@ class MbstringTest extends TestCase
      *
      * @requires PHP < 8
      */
+    #[RequiresPhp('< 8')]
     public function testStrposEmptyDelimiter()
     {
         mb_strpos('abc', 'a');
@@ -635,6 +641,9 @@ class MbstringTest extends TestCase
      * @dataProvider paddingEmojiProvider
      * @dataProvider paddingEncodingProvider
      */
+    #[DataProvider('paddingStringProvider')]
+    #[DataProvider('paddingEmojiProvider')]
+    #[DataProvider('paddingEncodingProvider')]
     public function testMbStrPad(string $expectedResult, string $string, int $length, string $padString, int $padType, ?string $encoding = null)
     {
         if ('UTF-32' === $encoding && \PHP_VERSION_ID < 73000) {
@@ -649,10 +658,11 @@ class MbstringTest extends TestCase
      *
      * @dataProvider mbStrPadInvalidArgumentsProvider
      */
+    #[DataProvider('mbStrPadInvalidArgumentsProvider')]
     public function testMbStrPadInvalidArguments(string $expectedError, string $string, int $length, string $padString, int $padType, ?string $encoding = null)
     {
         $this->expectException(\ValueError::class);
-        $this->expectErrorMessage($expectedError);
+        $this->expectExceptionMessage($expectedError);
 
         mb_str_pad($string, $length, $padString, $padType, $encoding);
     }
@@ -660,6 +670,7 @@ class MbstringTest extends TestCase
     /**
      * @dataProvider ucFirstDataProvider
      */
+    #[DataProvider('ucFirstDataProvider')]
     public function testMbUcFirst(string $string, string $expected)
     {
         $this->assertSame($expected, mb_ucfirst($string));
@@ -668,6 +679,7 @@ class MbstringTest extends TestCase
     /**
      * @dataProvider lcFirstDataProvider
      */
+    #[DataProvider('lcFirstDataProvider')]
     public function testMbLcFirst(string $string, string $expected)
     {
         $this->assertSame($expected, mb_lcfirst($string));
@@ -790,6 +802,7 @@ class MbstringTest extends TestCase
      *
      * @dataProvider mbTrimProvider
      */
+    #[DataProvider('mbTrimProvider')]
     public function testMbTrim(string $expected, string $string, ?string $characters = null, ?string $encoding = null)
     {
         $this->assertSame($expected, mb_trim($string, $characters, $encoding));
@@ -800,6 +813,7 @@ class MbstringTest extends TestCase
      *
      * @dataProvider mbLTrimProvider
      */
+    #[DataProvider('mbLTrimProvider')]
     public function testMbLTrim(string $expected, string $string, ?string $characters = null, ?string $encoding = null)
     {
         $this->assertSame($expected, mb_ltrim($string, $characters, $encoding));
@@ -810,6 +824,7 @@ class MbstringTest extends TestCase
      *
      * @dataProvider mbRTrimProvider
      */
+    #[DataProvider('mbRTrimProvider')]
     public function testMbRTrim(string $expected, string $string, ?string $characters = null, ?string $encoding = null)
     {
         $this->assertSame($expected, mb_rtrim($string, $characters, $encoding));
diff --git a/tests/Php73/Php73Test.php b/tests/Php73/Php73Test.php
index fb20aad..0dae957 100644
--- a/tests/Php73/Php73Test.php
+++ b/tests/Php73/Php73Test.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Php73;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 
 /**
@@ -96,6 +97,7 @@ class Php73Test extends TestCase
     /**
      * @dataProvider arrayKeyFirstDataProvider
      */
+    #[DataProvider('arrayKeyFirstDataProvider')]
     public function testArrayKeyFirst($expected, array $array)
     {
         $this->assertSame($expected, array_key_first($array));
@@ -114,6 +116,7 @@ class Php73Test extends TestCase
     /**
      * @dataProvider arrayKeyLastDataProvider
      */
+    #[DataProvider('arrayKeyLastDataProvider')]
     public function testArrayLastFirst($expected, array $array)
     {
         $this->assertSame($expected, array_key_last($array));
diff --git a/tests/Php74/Php74Test.php b/tests/Php74/Php74Test.php
index 44a17c9..ab3abcd 100644
--- a/tests/Php74/Php74Test.php
+++ b/tests/Php74/Php74Test.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Php74;
 
+use PHPUnit\Framework\Attributes\RequiresPhp;
 use PHPUnit\Framework\TestCase;
 
 /**
@@ -56,6 +57,7 @@ class Php74Test extends TestCase
      *
      * @requires PHP < 8
      */
+    #[RequiresPhp('< 8')]
     public function testGetMangledObjectVarsOnNonObject()
     {
         $this->assertNull(@get_mangled_object_vars(0));
@@ -104,6 +106,7 @@ class Php74Test extends TestCase
      *
      * @requires PHP < 8
      */
+    #[RequiresPhp('< 8')]
     public function testStrSplitWithInvalidValues()
     {
         $this->assertSame([], mb_str_split('', 1, 'UTF-8'));
diff --git a/tests/Php80/Php80Test.php b/tests/Php80/Php80Test.php
index daa59c6..853e817 100644
--- a/tests/Php80/Php80Test.php
+++ b/tests/Php80/Php80Test.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Php80;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 
 /**
@@ -26,6 +27,7 @@ class Php80Test extends TestCase
      *
      * @dataProvider fdivProvider
      */
+    #[DataProvider('fdivProvider')]
     public function testFdiv($expected, $divident, $divisor)
     {
         try {
@@ -43,6 +45,7 @@ class Php80Test extends TestCase
      *
      * @dataProvider nanFdivProvider
      */
+    #[DataProvider('nanFdivProvider')]
     public function testFdivNan($divident, $divisor)
     {
         try {
@@ -57,6 +60,7 @@ class Php80Test extends TestCase
      *
      * @dataProvider invalidFloatProvider
      */
+    #[DataProvider('invalidFloatProvider')]
     public function testFdivTypeError($divident, $divisor)
     {
         $this->expectException('TypeError');
@@ -216,6 +220,7 @@ class Php80Test extends TestCase
      *
      * @dataProvider invalidResourceProvider
      */
+    #[DataProvider('invalidResourceProvider')]
     public function testGetResourceWithInvalidValue($value)
     {
         $this->expectException('TypeError');
diff --git a/tests/Php82/Php82Test.php b/tests/Php82/Php82Test.php
index f0104a2..e5ce7a7 100644
--- a/tests/Php82/Php82Test.php
+++ b/tests/Php82/Php82Test.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Php82;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 
 class Php82Test extends TestCase
@@ -21,7 +22,9 @@ class Php82Test extends TestCase
      *
      * @requires extension odbc
      */
-    public function testConnectionStringIsQuoted(string $value, bool $isQuoted)
+    #[DataProvider('provideConnectionStringValuesFromUpstream')]
+    #[DataProvider('provideMoreConnectionStringValues')]
+    public function testConnectionStringIsQuoted(string $value, bool $isQuoted, bool $shouldQuote, string $quoted)
     {
         self::assertSame($isQuoted, odbc_connection_string_is_quoted($value));
     }
@@ -32,7 +35,9 @@ class Php82Test extends TestCase
      *
      * @requires extension odbc
      */
-    public function testConnectionStringShouldQuote(string $value, bool $isQuoted, bool $shouldQuote)
+    #[DataProvider('provideConnectionStringValuesFromUpstream')]
+    #[DataProvider('provideMoreConnectionStringValues')]
+    public function testConnectionStringShouldQuote(string $value, bool $isQuoted, bool $shouldQuote, string $quoted)
     {
         self::assertSame($shouldQuote, odbc_connection_string_should_quote($value));
     }
@@ -43,6 +48,8 @@ class Php82Test extends TestCase
      *
      * @requires extension odbc
      */
+    #[DataProvider('provideConnectionStringValuesFromUpstream')]
+    #[DataProvider('provideMoreConnectionStringValues')]
     public function testConnectionStringQuote(string $value, bool $isQuoted, bool $shouldQuote, string $quoted)
     {
         self::assertSame($quoted, odbc_connection_string_quote($value));
diff --git a/tests/Php82/RandomSecureEngineTest.php b/tests/Php82/RandomSecureEngineTest.php
index 7290be8..429ea43 100644
--- a/tests/Php82/RandomSecureEngineTest.php
+++ b/tests/Php82/RandomSecureEngineTest.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Php82;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Php82\Random\Engine\Secure as SecureEnginePolyfill;
 
@@ -19,7 +20,7 @@ use Symfony\Polyfill\Php82\Random\Engine\Secure as SecureEnginePolyfill;
  */
 class RandomSecureEngineTest extends TestCase
 {
-    public function secureEngineProvider()
+    public static function secureEngineProvider()
     {
         yield [new SecureEnginePolyfill()];
         yield [new \Random\Engine\Secure()];
@@ -28,6 +29,7 @@ class RandomSecureEngineTest extends TestCase
     /**
      * @dataProvider secureEngineProvider
      */
+    #[DataProvider('secureEngineProvider')]
     public function testGenerateLength($v)
     {
         $this->assertSame(\PHP_INT_SIZE, \strlen($v->generate()));
@@ -36,6 +38,7 @@ class RandomSecureEngineTest extends TestCase
     /**
      * @dataProvider secureEngineProvider
      */
+    #[DataProvider('secureEngineProvider')]
     public function testCloneIsNotAllowed($v)
     {
         $this->expectException(\Error::class);
@@ -47,6 +50,7 @@ class RandomSecureEngineTest extends TestCase
     /**
      * @dataProvider secureEngineProvider
      */
+    #[DataProvider('secureEngineProvider')]
     public function testSerializeIsNotAllowed($v)
     {
         $this->expectException(\Exception::class);
@@ -58,6 +62,7 @@ class RandomSecureEngineTest extends TestCase
     /**
      * @dataProvider secureEngineProvider
      */
+    #[DataProvider('secureEngineProvider')]
     public function testUnserializeIsNotAllowed($v)
     {
         $this->expectException(\Exception::class);
diff --git a/tests/Php82/SensitiveParameterValuePolyfillTest.php b/tests/Php82/SensitiveParameterValuePolyfillTest.php
index 2fdc38c..ecc3758 100644
--- a/tests/Php82/SensitiveParameterValuePolyfillTest.php
+++ b/tests/Php82/SensitiveParameterValuePolyfillTest.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Php82;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Php82\SensitiveParameterValue as SensitiveParameterValuePolyfill;
 
@@ -28,6 +29,7 @@ class SensitiveParameterValuePolyfillTest extends TestCase
     /**
      * @dataProvider sensitiveParameterValueProvider
      */
+    #[DataProvider('sensitiveParameterValueProvider')]
     public function testGetValue($v)
     {
         $this->assertSame('secret', $v->getValue());
@@ -36,6 +38,7 @@ class SensitiveParameterValuePolyfillTest extends TestCase
     /**
      * @dataProvider sensitiveParameterValueProvider
      */
+    #[DataProvider('sensitiveParameterValueProvider')]
     public function testSerializeIsNotAllowed($v)
     {
         $this->expectException(\Exception::class);
@@ -47,6 +50,7 @@ class SensitiveParameterValuePolyfillTest extends TestCase
     /**
      * @dataProvider sensitiveParameterValueProvider
      */
+    #[DataProvider('sensitiveParameterValueProvider')]
     public function testVarDumpDoesNotLeak($v)
     {
         ob_start();
@@ -59,6 +63,7 @@ class SensitiveParameterValuePolyfillTest extends TestCase
     /**
      * @dataProvider sensitiveParameterValueProvider
      */
+    #[DataProvider('sensitiveParameterValueProvider')]
     public function testDebugZvalDumpDoesNotLeak($v)
     {
         ob_start();
@@ -71,6 +76,7 @@ class SensitiveParameterValuePolyfillTest extends TestCase
     /**
      * @dataProvider sensitiveParameterValueProvider
      */
+    #[DataProvider('sensitiveParameterValueProvider')]
     public function testClone($v)
     {
         $clone = clone $v;
diff --git a/tests/Php83/Php83Test.php b/tests/Php83/Php83Test.php
index 2c704e7..d485f2a 100644
--- a/tests/Php83/Php83Test.php
+++ b/tests/Php83/Php83Test.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Php83;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 
 class Php83Test extends TestCase
@@ -20,6 +21,7 @@ class Php83Test extends TestCase
      *
      * @dataProvider jsonDataProvider
      */
+    #[DataProvider('jsonDataProvider')]
     public function testJsonValidate(bool $valid, string $json, string $errorMessage = 'No error', int $depth = 512, int $options = 0)
     {
         $this->assertSame($valid, json_validate($json, $depth, $options));
@@ -33,6 +35,9 @@ class Php83Test extends TestCase
      * @dataProvider paddingEmojiProvider
      * @dataProvider paddingEncodingProvider
      */
+    #[DataProvider('paddingStringProvider')]
+    #[DataProvider('paddingEmojiProvider')]
+    #[DataProvider('paddingEncodingProvider')]
     public function testMbStrPad(string $expectedResult, string $string, int $length, string $padString, int $padType, ?string $encoding = null)
     {
         $this->assertSame($expectedResult, mb_convert_encoding(mb_str_pad($string, $length, $padString, $padType, $encoding), 'UTF-8', $encoding ?? mb_internal_encoding()));
@@ -43,10 +48,11 @@ class Php83Test extends TestCase
      *
      * @dataProvider mbStrPadInvalidArgumentsProvider
      */
+    #[DataProvider('mbStrPadInvalidArgumentsProvider')]
     public function testMbStrPadInvalidArguments(string $expectedError, string $string, int $length, string $padString, int $padType, ?string $encoding = null)
     {
         $this->expectException(\ValueError::class);
-        $this->expectErrorMessage($expectedError);
+        $this->expectExceptionMessage($expectedError);
 
         mb_str_pad($string, $length, $padString, $padType, $encoding);
     }
@@ -159,10 +165,11 @@ class Php83Test extends TestCase
      *
      * @dataProvider jsonInvalidOptionsProvider
      */
+    #[DataProvider('jsonInvalidOptionsProvider')]
     public function testJsonValidateInvalidOptionsProvided(int $depth, int $flags, string $expectedError)
     {
         $this->expectException(\ValueError::class);
-        $this->expectErrorMessage($expectedError);
+        $this->expectExceptionMessage($expectedError);
         json_validate('{}', $depth, $flags);
     }
 
@@ -209,6 +216,7 @@ class Php83Test extends TestCase
      *
      * @dataProvider strIncrementProvider
      */
+    #[DataProvider('strIncrementProvider')]
     public function testStrIncrement(string $result, string $string)
     {
         $this->assertSame($result, str_increment($string));
@@ -219,6 +227,7 @@ class Php83Test extends TestCase
      *
      * @dataProvider strDecrementProvider
      */
+    #[DataProvider('strDecrementProvider')]
     public function testStrDecrement(string $result, string $string)
     {
         $this->assertSame($result, str_decrement($string));
@@ -271,6 +280,7 @@ class Php83Test extends TestCase
      *
      * @dataProvider strInvalidIncrementProvider
      */
+    #[DataProvider('strInvalidIncrementProvider')]
     public function testInvalidStrIncrement(string $errorMessage, string $string)
     {
         $this->expectException(\ValueError::class);
@@ -302,6 +312,7 @@ class Php83Test extends TestCase
      *
      * @dataProvider strInvalidDecrementProvider
      */
+    #[DataProvider('strInvalidDecrementProvider')]
     public function testInvalidStrDecrement(string $errorMessage, string $string)
     {
         $this->expectException(\ValueError::class);
diff --git a/tests/Php84/Php84Test.php b/tests/Php84/Php84Test.php
index a52901d..2645f8c 100644
--- a/tests/Php84/Php84Test.php
+++ b/tests/Php84/Php84Test.php
@@ -19,6 +19,7 @@ class Php84Test extends TestCase
     /**
      * @dataProvider ucFirstDataProvider
      */
+    #[DataProvider('ucFirstDataProvider')]
     public function testMbUcFirst(string $string, string $expected)
     {
         $this->assertSame($expected, mb_ucfirst($string));
@@ -27,6 +28,7 @@ class Php84Test extends TestCase
     /**
      * @dataProvider lcFirstDataProvider
      */
+    #[DataProvider('lcFirstDataProvider')]
     public function testMbLcFirst(string $string, string $expected)
     {
         $this->assertSame($expected, mb_lcfirst($string));
@@ -35,6 +37,7 @@ class Php84Test extends TestCase
     /**
      * @dataProvider arrayFindDataProvider
      */
+    #[DataProvider('arrayFindDataProvider')]
     public function testArrayFind(array $array, callable $callback, $expected)
     {
         $this->assertSame($expected, array_find($array, $callback));
@@ -43,6 +46,7 @@ class Php84Test extends TestCase
     /**
      * @dataProvider arrayFindKeyDataProvider
      */
+    #[DataProvider('arrayFindKeyDataProvider')]
     public function testArrayFindKey(array $array, callable $callback, $expected)
     {
         $this->assertSame($expected, array_find_key($array, $callback));
@@ -51,6 +55,7 @@ class Php84Test extends TestCase
     /**
      * @dataProvider arrayAnyDataProvider
      */
+    #[DataProvider('arrayAnyDataProvider')]
     public function testArrayAny(array $array, callable $callback, bool $expected)
     {
         $this->assertSame($expected, array_any($array, $callback));
@@ -59,6 +64,7 @@ class Php84Test extends TestCase
     /**
      * @dataProvider arrayAllDataProvider
      */
+    #[DataProvider('arrayAllDataProvider')]
     public function testArrayAll(array $array, callable $callback, bool $expected)
     {
         $this->assertSame($expected, array_all($array, $callback));
@@ -202,6 +208,7 @@ class Php84Test extends TestCase
      *
      * @dataProvider mbTrimProvider
      */
+    #[DataProvider('mbTrimProvider')]
     public function testMbTrim(string $expected, string $string, ?string $characters = null, ?string $encoding = null)
     {
         $this->assertSame($expected, mb_trim($string, $characters, $encoding));
@@ -212,6 +219,7 @@ class Php84Test extends TestCase
      *
      * @dataProvider mbLTrimProvider
      */
+    #[DataProvider('mbLTrimProvider')]
     public function testMbLTrim(string $expected, string $string, ?string $characters = null, ?string $encoding = null)
     {
         $this->assertSame($expected, mb_ltrim($string, $characters, $encoding));
@@ -222,6 +230,7 @@ class Php84Test extends TestCase
      *
      * @dataProvider mbRTrimProvider
      */
+    #[DataProvider('mbRTrimProvider')]
     public function testMbRTrim(string $expected, string $string, ?string $characters = null, ?string $encoding = null)
     {
         $this->assertSame($expected, mb_rtrim($string, $characters, $encoding));
@@ -323,6 +332,7 @@ class Php84Test extends TestCase
     /**
      * @dataProvider fpowProvider
      */
+    #[DataProvider('fpowProvider')]
     public function testFpow(float $num, float $exponent, float $expected)
     {
         $result = fpow($num, $exponent);
@@ -667,6 +677,7 @@ class Php84Test extends TestCase
     /**
      * @dataProvider graphemeStrSplitDataProvider
      */
+    #[DataProvider('graphemeStrSplitDataProvider')]
     public function testGraphemeStrSplit(string $string, int $length, array $expectedValues)
     {
         $this->assertSame($expectedValues, grapheme_str_split($string, $length));
@@ -701,6 +712,7 @@ class Php84Test extends TestCase
      *
      * @dataProvider bcDivModProvider
      */
+    #[DataProvider('bcDivModProvider')]
     public function testBcDivMod(string $num1, string $num2, ?int $scale, array $expected)
     {
         $this->assertSame($expected, bcdivmod($num1, $num2, $scale));
diff --git a/tests/Php85/Php85Test.php b/tests/Php85/Php85Test.php
index 727fc28..cd102e4 100644
--- a/tests/Php85/Php85Test.php
+++ b/tests/Php85/Php85Test.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Php85;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 
 class Php85Test extends TestCase
@@ -18,6 +19,7 @@ class Php85Test extends TestCase
     /**
     * @dataProvider provideHandler
     */
+    #[DataProvider('provideHandler')]
     public function testGetErrorHandler($expected, $handler): void
     {
         set_error_handler($handler);
@@ -38,6 +40,7 @@ class Php85Test extends TestCase
     /**
     * @dataProvider provideHandler
     */
+    #[DataProvider('provideHandler')]
     public function testGetExceptionHandler($expected, $handler): void
     {
         set_exception_handler($handler);
diff --git a/tests/Uuid/UuidTest.php b/tests/Uuid/UuidTest.php
index c84bef9..ed085a0 100644
--- a/tests/Uuid/UuidTest.php
+++ b/tests/Uuid/UuidTest.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Polyfill\Tests\Uuid;
 
+use PHPUnit\Framework\Attributes\DataProvider;
 use PHPUnit\Framework\TestCase;
 use Symfony\Polyfill\Uuid\Uuid;
 
@@ -85,6 +86,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideCreateNoOverlapTests */
+    #[DataProvider('provideCreateNoOverlapTests')]
     public function testCreateNoOverlap(int $type)
     {
         $uuids = [];
@@ -111,6 +113,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideIsValidTest */
+    #[DataProvider('provideIsValidTest')]
     public function testIsValid(bool $expected, string $uuid)
     {
         $this->assertSame($expected, uuid_is_valid($uuid));
@@ -126,6 +129,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideCompareTest */
+    #[DataProvider('provideCompareTest')]
     public function testCompare(int $expected, string $uuid1, string $uuid2)
     {
         $result = @uuid_compare($uuid1, $uuid2);
@@ -168,6 +172,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideIsNullTest */
+    #[DataProvider('provideIsNullTest')]
     public function testIsNull(bool $expected, string $uuid)
     {
         $this->assertSame($expected, @uuid_is_null($uuid));
@@ -194,6 +199,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideTypeTest */
+    #[DataProvider('provideTypeTest')]
     public function testType(int $expected, string $uuid)
     {
         $this->assertSame($expected, @uuid_type($uuid));
@@ -219,6 +225,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideVariantTest */
+    #[DataProvider('provideVariantTest')]
     public function testVariant(int $expected, string $uuid)
     {
         $this->assertSame($expected, @uuid_variant($uuid));
@@ -243,6 +250,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideTimeTest */
+    #[DataProvider('provideTimeTest')]
     public function testTime(int $expected, string $uuid)
     {
         $this->assertSame($expected, @uuid_time($uuid));
@@ -260,6 +268,7 @@ class UuidTest extends TestCase
     /**
      * @dataProvider provideInvalidTimeTest
      */
+    #[DataProvider('provideInvalidTimeTest')]
     public function testTimeWithInvalidUuid(string $uuid)
     {
         if (80000 <= \PHP_VERSION_ID) {
@@ -279,6 +288,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideMacTest */
+    #[DataProvider('provideMacTest')]
     public function testMac(string $expected, string $uuid)
     {
         $this->assertSame($expected, @uuid_mac($uuid));
@@ -296,6 +306,7 @@ class UuidTest extends TestCase
     /**
      * @dataProvider provideInvalidMacTest
      */
+    #[DataProvider('provideInvalidMacTest')]
     public function testMacWithInvalidUuid(string $uuid)
     {
         if (80000 <= \PHP_VERSION_ID) {
@@ -316,6 +327,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideParseTest */
+    #[DataProvider('provideParseTest')]
     public function testParse(string $expected, string $uuid)
     {
         $out = bin2hex(@uuid_parse($uuid));
@@ -343,6 +355,7 @@ class UuidTest extends TestCase
     }
 
     /** @dataProvider provideUnparseTest */
+    #[DataProvider('provideUnparseTest')]
     public function testUnparse(string $expected, string $uuid)
     {
         $this->assertSame($expected, @uuid_unparse($uuid));
@@ -359,6 +372,7 @@ class UuidTest extends TestCase
     /**
      * @dataProvider provideInvalidUnparseTest
      */
+    #[DataProvider('provideInvalidUnparseTest')]
     public function testUnparseWithInvalidUuid(string $uuid)
     {
         if (80000 <= \PHP_VERSION_ID) {
