在PHPUnit中过滤掉代码覆盖(绝对)路径的语法

时间:2011-04-07 16:43:16

标签: php phpunit code-coverage

我只是对单个文件进行单元测试,虽然它是唯一一个经过单元测试(好)的文件,但代码覆盖率不仅仅是单个文件(不好)。它覆盖了我的PEAR目录中的一些文件,由于某种原因我还无法理解,所以我的所有覆盖统计信息都被扭曲了。

所以我试图消除这些额外的文件,但无法获得绝对目录的格式:

<phpunit>

<testsuites>
  <testsuite name="My Test Suite">
    <file>AntProxyTest.php</file>
  </testsuite>
</testsuites>

<logging>
  <log type="coverage-html" target="/tmp/report" charset="UTF-8"
       yui="true" highlight="false"
       lowUpperBound="35" highLowerBound="70"/>
</logging>

<filter>
  <blacklist>
     <directory suffix=".php">c:\php\pear</directory>
   </blacklist>
</filter>

</phpunit>

不是按照我的意愿排除,要么是正斜杠,要么是 file:// c:/ php / pear

2 个答案:

答案 0 :(得分:4)

我认为phpunit在Windows上获取该路径存在问题,因为我无法在Linux上重现该路径。 (使用绝对和相对路径工作正常)。

我也听说人们在Windows上过滤和修改这个问题。

所以我的第一个建议就是使用白名单。我创建了一个小项目,其中包含来自不同文件夹的代码(并且所有代码都出现在代码覆盖中)。

但在设置此白名单后:

<filter>
  <whitelist>
     <directory suffix=".php">.</directory>
  </whitelist>
</filter>

只有该文件夹中的代码(或您的文件,如果您真的有一个)显示在覆盖率报告中。

答案 1 :(得分:1)

我设法在IRC上抓住塞巴斯蒂安,同时其他人也遇到了黑名单问题。塞巴斯蒂安表示,我所看到的这些PEAR文件是一个已知问题,将在下一版本修复。

正如上面的编辑所说,塞巴斯蒂安还说最好将你想要的东西列入白名单,这样做,这个问题就会消失。