用于过滤PHPUnit中的代码覆盖率(绝对)路径的语法

用于过滤PHPUnit中的代码覆盖率(绝对)路径的语法,php,phpunit,code-coverage,Php,Phpunit,Code Coverage,我只是对一个文件进行单元测试,虽然它是唯一一个进行单元测试的文件(好),但代码覆盖率并不仅仅局限于这个文件(坏)。它覆盖了我的PEAR目录中的一些文件,因为某些原因我还不能理解,所以我所有的覆盖数据都被扭曲了 因此,我试图消除这些额外的文件,但无法获得绝对目录的正确格式: <phpunit> <testsuites> <testsuite name="My Test Suite"> <file>AntProxyTest.php<

我只是对一个文件进行单元测试,虽然它是唯一一个进行单元测试的文件(好),但代码覆盖率并不仅仅局限于这个文件(坏)。它覆盖了我的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>

AntProxyTest.php
c:\php\pear

不是如我所愿排除的,要么是正斜杠,要么是file://c:/php/pear。

我认为phpunit在windows上获得正确的路径有问题,因为我无法在linux上复制它。(使用绝对路径和相对路径效果良好)

我还听到人们谈论过windows上的过滤和路径问题

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

但设置此白名单后:

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

.

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

我认为phpunit在windows上正确获取该路径时存在问题,因为我无法在linux上复制该路径。(使用绝对路径和相对路径效果良好)

我还听到人们谈论过windows上的过滤和路径问题

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

但设置此白名单后:

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

.

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

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


正如edorian所指出的,Sebastian还说,无论如何,将你想要的东西列入白名单是最好的做法,这样做,这个问题就会消失。

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


正如edorian上面所指出的,Sebastian还说,无论如何,将您想要的东西列入白名单是一种最佳做法,这样做,这个问题就会消失。

我们也使用白名单,在每个项目的
bootstrap.php
中以编程方式指定。请注意,白名单覆盖黑名单;它们不能结合在一起。@David我有兴趣听/读更多关于您正在使用的方法及其背后的原因的信息。如果我们碰巧相遇,也许会在聊天中?:)我会试试白名单,但我对它的理解不是限制而是选择性地覆盖黑名单。另一件事,phpunit手册说xml文件中的filter标记用于过滤文件以获得代码覆盖率,但是它说--filter命令行选项用于选择要测试的文件。理想情况下,我更愿意使用命令行选项来显示白名单/黑名单,但这似乎是出于不同的目的。我们这样做的唯一原因是,这是第一件有效的事情。;)我更喜欢用PHP而不是XML进行配置,它允许我们在所有项目中使用相同的
phpunit.XML
。@stebbo您不能在命令行上使用白名单和黑名单,您可以使用编程方式进行配置,但它们将在phpunit的未来版本中消失。因此,使用xml是最好的选择。据我所知,“白名单”意味着“使用白名单中列出的所有代码,只使用该代码”。我们也使用白名单,在每个项目的
bootstrap.php
中以编程方式指定。请注意,白名单覆盖黑名单;它们不能结合在一起。@David我有兴趣听/读更多关于您正在使用的方法及其背后的原因的信息。如果我们碰巧相遇,也许会在聊天中?:)我会试试白名单,但我对它的理解不是限制而是选择性地覆盖黑名单。另一件事,phpunit手册说xml文件中的filter标记用于过滤文件以获得代码覆盖率,但是它说--filter命令行选项用于选择要测试的文件。理想情况下,我更愿意使用命令行选项来显示白名单/黑名单,但这似乎是出于不同的目的。我们这样做的唯一原因是,这是第一件有效的事情。;)我更喜欢用PHP而不是XML进行配置,它允许我们在所有项目中使用相同的
phpunit.XML
。@stebbo您不能在命令行上使用白名单和黑名单,您可以使用编程方式进行配置,但它们将在phpunit的未来版本中消失。因此,使用xml是最好的选择。据我所知,“白名单”的意思是“使用白名单中列出的所有代码,并且只使用该代码”。