2011-06-02 71 views
3

我有一个PHPUnit测试,测试名为HelpTokenizerTest的类。这个类实现TokenizerInterface。由于某种奇怪的原因,我无法从代码覆盖范围中排除TokenizerInterface。从PHPUnit代码覆盖率中排除PHP接口

尽管使用@codeCoverageIgnore或者甚至@ codeCoverageIgnoreStart/End,它在代码覆盖率报告中未显示。

任何想法?

我不希望接口包含在我的测试覆盖范围内,因为它什么都不做。测试接口有什么意义。

+0

您使用XML配置或测试套件? – 2011-06-02 21:52:13

回答

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> 

+6

请注意,如果您定义白名单,PHPUnit将忽略黑名单,因此您必须在白名单中使用“”块,如上所示。 – 2011-06-02 22:07:05

+0

这就是我最终做的。感谢塞缪尔和大卫! – 2011-06-02 22:19:11

2

您可以使用@codeCoverageIgnore为注释在文件的开头获得100% 0/0覆盖。

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

请注意,它不起作用的评论块。

问题上PHPUnit的github上开:https://github.com/sebastianbergmann/phpunit/issues/497