PHPUnit 10:如何用Attributes替代@covers文档块元数据?
PHPUnit 迁移到覆盖属性的解决方案
要替代原文档块中的@coversDefaultClass和@covers ::bar,你需要按照以下方式使用PHPUnit的属性:
- 先引入所需的属性类:
use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\CoversFunction; use PHPUnit\Framework\Attributes\Test;
- 类级别用
#[CoversClass]替代@coversDefaultClass,方法级别用#[CoversFunction]指定完整方法限定名替代@covers ::bar:
#[CoversClass(\App\Foo::class)] final class FooTest { #[Test] #[CoversFunction('App\Foo::bar')] public function can_it_bar(): void { // 测试逻辑 } }
关键注意点
#[CoversClass]直接传入目标类的完整类名(带命名空间),作用和@coversDefaultClass完全一致,为整个测试类指定默认覆盖的类。#[CoversFunction]需要传入完整的方法限定名(命名空间+类名+方法名),不能像文档块那样仅写::bar,这是属性与文档块语法的核心区别,能确保覆盖率统计精准匹配目标方法。
内容的提问来源于stack exchange,提问作者lloydimus
相关产品推荐
相关产品推荐

