Use PHP 8 Attributes (#[Test], #[DataProvider], #[CoversClass]) instead of docblock annotations.
Parameterized Tests with Attributes
use PHPUnitFrameworkAttributesDataProvider;
use PHPUnitFrameworkAttributesTest;
class StringValidatorTest extends TestCase {
#[Test]
#[DataProvider("validEmailProvider")]
public function validEmailsPass(string $email): void {
$this->assertTrue((new Validator)->isEmail($email));
}
public static function validEmailProvider(): array {
return [
["alice@example.com"],
["bob+tag@gmail.com"],
["user@sub.domain.org"],
];
}
#[Test]
#[DataProvider("invalidEmailProvider")]
public function invalidEmailsFail(string $email): void {
$this->assertFalse((new Validator)->isEmail($email));
}
public static function invalidEmailProvider(): array {
return [
"empty" => [""],
"no at sign" => ["notanemail"],
"no domain" => ["alice@"],
"double at" => ["alice@@example.com"],
];
}
}