我正在尝试为特定目录的 phpunit 设置代码覆盖率。谁能告诉我:
<filter>
<whitelist>
<directory suffix=".php">lib/</directory>
</whitelist>
</filter>
和
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">lib/</directory>
</whitelist>
</filter>
和
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">lib/</directory>
</whitelist>
</filter>
目前前两个选项可以使用(覆盖率不同)但第三个选项将失败并出现类似于 How to add uncovered files to PHPUnit code coverage report of the Yii application 的错误.
刚开始使用 phpunit,想了解这些白名单选项之间的区别。我阅读了有关此的官方文档,但不确定我是否理解。
最佳答案
快速浏览php-code-coverage
的源代码GitHub上的包揭示了真相:
- 如果
addUncoveredFilesFromWhitelist
是FALSE
然后代码覆盖率包含有关已加载和执行的文件的信息(仅包含包含代码的行);
在这种情况下,processUncoveredFilesFromWhitelist
的值会被忽略; - 如果
addUncoveredFilesFromWhitelist
是TRUE
那么白名单中未加载和执行的文件也将包含在代码覆盖范围内:
addUncoveredFilesFromWhitelist
的默认值为 TRUE
,processUncoveredFilesFromWhitelist
的默认值为 FALSE
。这意味着白名单中未被覆盖的文件(因为它们没有运行)使用快速方式包含在报告中,并且它们的覆盖率报告虽然准确 (0%
) 是使用计算的总行数略大于实际行数。
但是,由于 0
仍然是 0%
,它认为这是在报告中包含未发现文件的最佳方式。
关于Phpunit 覆盖范围 : what is the difference between 'addUncoveredFilesFromWhitelist' and 'processUncoveredFilesFromWhitelist' options?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041254/