PHPUnit9.0 标注-@covers
2022-03-24 10:59 更新
PHPUnit9.0 标注集合
在测试代码中用 @covers
标注来指明想要对代码的哪些部分进行测试:
/**
* @covers \BankAccount
*/
public function testBalanceIsInitiallyZero(): void
{
$this->assertSame(0, $this->ba->getBalance());
}
如果提供,这将有效地过滤代码覆盖率报告,将其限制为仅包括所指代码部分中的已执行部分。这将确保代码只在有针对它的专用测试覆盖的情况下才会被标记为已覆盖,而如果它被针对其他类的测试间接使用则并不会标记为已覆盖,从而避免代码覆盖范围的误报。
此标注可以添加给测试类的文档注释块,也可以添加给单个测试方法的文档注释块。推荐的方法是将此标注添加给测试类的文档注释块而不是测试方法的文档注释块。
如果配置文件中的 forceCoversAnnotation
配置选项设置为 true
,则每个测试方法都必须拥有相应的 @covers
标注(无论是在测试类还是单个测试方法上)。
表格 2.2 展示了 @covers
标注的语法。 指明覆盖的代码部分这部分有关于使用此标注的更长一些的示例。
请注意,此标注要求用完全限定类名(FQCN,fully-qualified class name)。为了让读者更容易理解,推荐写上开头的反斜杠(虽然此标注并不要求如此也能正常运行)。
表格 2.2 用于指明测试覆盖哪些方法的标注
标注 | 描述 |
@covers ClassName::methodName (不推荐) |
指明所标注的测试方法覆盖指定的方法。 |
@covers ClassName (推荐) |
指明所标注的测试方法覆盖给定类的全部方法。 |
@covers ClassName<extended> (不推荐) |
指明所标注的测试方法覆盖给定类以及其所有父类的全部方法。 |
@covers ClassName::<public> (不推荐) |
指明所标注的测试方法覆盖给定类的所有 public 方法。 |
@covers ClassName::<protected> (不推荐) |
指明所标注的测试方法覆盖给定类的所有 protected 方法。 |
@covers ClassName::<private> (不推荐) |
指明所标注的测试方法覆盖给定类的所有 private 方法。 |
@covers ClassName::<!public> (不推荐) |
指明所标注的测试方法覆盖给定类的所有非 public 方法。 |
@covers ClassName::<!protected> (不推荐) |
指明所标注的测试方法覆盖给定类的所有非 protected 方法。 |
@covers ClassName::<!private> (不推荐) |
指明所标注的测试方法覆盖给定类的所有非 private 方法。 |
@covers ::functionName (推荐) |
指明所标注的测试方法覆盖给定的全局函数。 |
以上内容是否对您有帮助:
更多建议: