Prefer modern PHPUnit attributes over PHPDoc annotations for improved type safety, IDE support, and code readability in tests. Replace legacy annotation-style test decorators with their attribute counterparts:
Prefer modern PHPUnit attributes over PHPDoc annotations for improved type safety, IDE support, and code readability in tests. Replace legacy annotation-style test decorators with their attribute counterparts:
#[DataProvider]
for test data organization:
```php
#[DataProvider(‘provideStrSanitizeTestStrings’)]
public function testSanitize(?string $subject, ?string $expected, ?HtmlSanitizerConfig $config)
{
$this->assertSame($expected, Str::sanitize($subject, $config));
}public static function provideStrSanitizeTestStrings() { return [ ‘non-empty string is returned as is’ => [‘Hello’, ‘Hello’, null], ‘XSS attack is sanitized’ => [‘’, ‘’, null], // more test cases… ]; }
- Use `#[RequiresPhp('8.4.0')]` or similar attributes instead of manual version checks:
```php
// Instead of:
if (PHP_VERSION_ID < 80400) {
$this->markTestSkipped('Property Hooks are not available to test in PHP...');
}
// Use:
#[RequiresPhp('8.4.0')]
class DatabaseEloquentWithPropertyHooksTest extends TestCase
{
// Test methods...
}
#[TestWith]
:
#[TestWith(['Hello', 'Hello', null])]
#[TestWith([123, '123', null])]
#[TestWith([null, null, null])]
public function testSanitize(?string $subject, ?string $expected, ?HtmlSanitizerConfig $config)
{
$this->assertSame($expected, Str::sanitize($subject, $config));
}
This approach improves code maintainability, provides better type hinting to IDEs, and follows modern PHP testing practices.
Enter the URL of a public GitHub repository