是我还是不可能用“新”(它们已经存在了一段时间)属性方法重新创建文档块元数据“@covers”?
我们曾经这样编写测试:
/**
* @coversDefaultClass \App\Foo
*/
final class FooTest
{
/**
* @test
* @covers ::bar
*/
public function can_it_bar(): void
{
}
}
但就我的一生而言,我似乎无法用
#[CoversClass]
和/或 #[CoversFunction]
重现相同的结果。
有人已经弄清楚了吗?
我们想要开始迁移到属性,因为这里发布了 PHPUnit 12 对文档块中元数据的支持将被删除的消息:
https://github.com/sebastianbergmann/phpunit/issues/4502
提前致谢
正如您所说,不可能重现相同的行为,但据我所知,您必须像这样重新编写代码:
<?php
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\CoversFunction;
use PHPUnit\Framework\Attributes\Test;
#[CoversClass(\App\Foo::class)]
#[CoversFunction('bar')]
final class FooTest
{
#[Test]
public function can_it_bar(): void
{
}
}
您甚至可以使用 Rector 和自定义 PhpUnit 规则自动执行此操作。
PhpUnit 开发人员有删除许多人使用的功能的烦人习惯,例如,他们删除了大量断言,因为 他们认为不再使用它们是不好的。
这次在方法级别不允许
CoversFunction
的理由是:
...方法上允许使用@covers,但混合起来没有意义 测试用例类中的不同覆盖目标)来源
在我看来,最简单的事情就是不再使用
CoversFunction
,只使用CoversClass
。