从PHPUnit代码覆盖中排除PHP接口

时间:2011-06-02 21:50:47

标签: php unit-testing phpunit

我有一个PHPUnit测试,用于测试名为HelpTokenizerTest的类。该类实现TokenizerInterface。出于某些奇怪的原因,我无法从代码覆盖中排除TokenizerInterface。

尽管使用了@codeCoverageIgnore甚至@codeCoverageIgnoreStart / End,它仍然显示在未涵盖的代码覆盖率报告中。

有什么想法吗?

我不希望我的测试覆盖中包含该接口,因为它没有做任何事情。测试接口有什么意义。

2 个答案:

答案 0 :(得分:2)

使用phpunit.xml时,您可以设置过滤器以排除具有特定名称的文件,特别是文件夹或具有特定扩展名的文件。

请参阅the documentation for it

示例:

<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>

答案 1 :(得分:2)

您可以在文件开头使用 @codeCoverageIgnore 作为评论,以获得100%0/0的覆盖率。

<?php // @codeCoverageIgnoreStart 
interface MyInterface
{
    public function myfunction();
}

请注意,它不会在评论栏中发挥作用。

在PHPUnit&#39; s github:https://github.com/sebastianbergmann/phpunit/issues/497

上打开问题