我有一个PHPUnit测试,它测试一个名为HelpTokenizerTest的类。此类实现TokenizerInterface。出于某种奇怪的原因,我不能将TokenizerInterface排除在代码覆盖范围之外。
它在代码覆盖率报告中显示为未覆盖,尽管使用@codeCoverageIgnore甚至@codeCoveraceIgnoreStart/End。
有什么想法吗?
我不希望接口包含在我的测试覆盖范围内,因为它什么都不做。测试接口有什么意义。
使用phpunit.xml时,可以设置过滤器来排除具有特定名称、特定文件夹或特定扩展名的文件。
请参阅的文档
示例:
<testsuite name="Application Test Suite">
<directory>./application/</directory>
</testsuite>
<filter>
<blacklist>
HERE
</blacklist>
or alternatively
<whitelist>
<directory suffix=".php">../library/</directory>
<directory suffix=".php">../application/</directory>
<exclude>
AND HERE
<directory suffix=".phtml">../application/</directory>
</exclude>
</whitelist>
</filter>
您可以在文件开头使用@codeCoverageIgnore作为注释,以获得100%的0/0覆盖率。
<?php // @codeCoverageIgnoreStart
interface MyInterface
{
public function myfunction();
}
请注意,它在评论块中不起作用。
在PHPUnit的github上公开发布:https://github.com/sebastianbergmann/phpunit/issues/497