我正在收集PHP单元测试的代码覆盖率数据;一些是单元测试,一些是集成测试,检查所有(类和配置)是否正确连接。
我只希望在运行单元测试时收集代码覆盖率信息,因为应该显示的单元测试覆盖目标类中的所有行(理想情况下使用@covers
注释)。集成测试不应该显示任何内容,但phpunit的默认位置似乎是,如果它没有任何@covers
注释,那么它应该覆盖每行代码每种测试方法直接或间接调用。
请注意,使用<whitelist>
中的phpunit.xml
会对我有所帮助,因为两组测试都可能会触及某些文件 - 而我想记录的代码覆盖率来自一个另一个。
我已经想到了几种可能的方法,但是没有一种方法看起来很干净&#39;对我来说:
@covers
声明&#39;文档块
这样做有效,但如上所述,添加像
@covers
这样的假/** @covers \stdClass */
感觉如此,那么脏。
codeCoverageIgnoreStart
/ End
注释(我不知道这是否有效)与下面类似,这似乎只是排除了包裹的代码行,而不是在其上调用的任何代码行
codeCoverageIgnore
注释添加到测试类中(我怀疑这不起作用,因为只是从coverage集合中排除类中的代码,但是为任何相关代码恢复集合)对此进行了测试,因为怀疑它只是具有语义,即测试类中的任何行都不应被视为被覆盖
有没有比上述任何可能性更清洁的方式?
答案 0 :(得分:0)
到目前为止我发现的最干净的感觉方法是上面提到的第一种方法的变体:在@covers
注释中将类引用给自己:
<?php
namespace FooTestSuite;
/** @covers \FooTestSuite\BarTest */
class BarTest extends \PHPUnit_Framework_TestCase {
/* ... */
}