单元测试-将PHP接口排除在PHPUnit代码覆盖范围之外


unit testing - Excluding a PHP Interface from PHPUnit code coverage

我有一个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