如何从代码覆盖率报告中排除未使用的库?

时间:2015-06-05 16:07:24

标签: phpunit code-coverage

我显然不了解PHPUnit的代码覆盖白名单。

我有几个文件夹的以下过滤器:

<filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">./app</directory>
    </whitelist>
    <whitelist addUncoveredFilesFromWhitelist="false">
        <directory suffix=".php">./lib</directory>
    </whitelist>
</filter>
  • &#34;应用&#34; - 我想知道这里没有涉及的任何内容,所以我已经为核心应用程序启用了addUncoveredFilesFromWhitelist。 (这可以按预期工作)

  • &#34; LIB&#34; - 我想从这里看到文件使用所涵盖的内容,但会有很多内容未被使用,因此我已禁用addUncoveredFilesFromWhitelist库文件。 (这个我有问题)

如果未包含在运行时的库文件会在报告中显示为未执行的代码。我可以通过添加会导致致命错误的行来验证测试期间未包含的代码。

这个结果似乎与PHPUnit文档所说的相矛盾,但毫无疑问我做错了。任何人都可以解释我如何包含我执行的库代码,但只包括测试期间所需的代码吗?

1 个答案:

答案 0 :(得分:-1)

您可以使用filter中的phpunit.xml节点。我在项目中使用了以下文件。它列入白名单的本地文件:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
  backupStaticAttributes="false"
  syntaxCheck="false"
  bootstrap="tests/bootstrap.php" 
>
<php>
  <includePath>lib/php</includePath>
</php>
<filter>
  <whitelist>
    <directory suffix=".php">lib/php/</directory>
  </whitelist>
</filter>
<testsuites>
   <testsuite name="Jm_Log">
     <directory suffix="Test.php">tests</directory>
   </testsuite>
</testsuites>
<logging>
  <log type="coverage-html" target="build/coverage" title="jam"
   charset="UTF-8" yui="true" highlight="true"
   lowUpperBound="35" highLowerBound="70"/>
  <log type="coverage-clover" target="build/logs/clover.xml"/>
  <log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false"/>
</logging>
</phpunit>

注意:您也可以使用黑名单。