我正在尝试为特定目录设置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并想了解这些白名单选项之间的差异。我阅读了关于此的官方文档,但我不确定我理解。
答案 0 :(得分:32)
快速浏览一下GitHub上php-code-coverage
包的源代码,揭示了真相:
addUncoveredFilesFromWhitelist
为FALSE
,则代码范围包含有关已加载和执行的文件的信息(仅包含包含代码的行); processUncoveredFilesFromWhitelist
的值将被忽略; addUncoveredFilesFromWhitelist
为TRUE
,则白名单中未加载和执行的文件也将包含在代码覆盖率中:
addUncoveredFilesFromWhitelist
的默认值为TRUE
,processUncoveredFilesFromWhitelist
的默认值为FALSE
。这意味着白名单中未涵盖的文件(因为它们没有运行)使用快速方式及其覆盖率报告包含在报告中,而精确(0%
)则使用总计计算行数略大于实际行数。
但是,由于任何内容的0
仍为0%
,因此它认为这是在报告中包含未覆盖文件的最佳方式。
答案 1 :(得分:6)
所以我觉得我错了。以下是documentation对此所说的内容:
(可选)通过在PHPUnit配置中设置addUncoveredFilesFromWhitelist =“true”,可以将所有列入白名单的文件添加到代码覆盖率报告中(请参阅“为代码覆盖率包含和排除文件”一节)。这允许包含尚未测试的文件。例如,如果要获取有关此类未覆盖文件的哪些行可执行的信息,还需要在PHPUnit配置中设置processUncoveredFilesFromWhitelist =“true”(请参阅“为代码覆盖率包含和排除文件”一节)。
所以这里的答案是adding
未覆盖的文件会将它们包含在覆盖率报告中,但实际上processing
它们会收集更多信息。
<强>原始强>
见塞巴斯蒂安的this twitter conversation。从twitter的简洁性来看,这有点难以辨别,但看起来addUncoveredFilesFromWhitelist
可能只是processUncoveredFilesFromWhitelist
为遗留代码提供的相同功能的旧形式。
Twitter对话的内容是:
@ user1:在@phpunit中,addUncoveredFilesFromWhitelist =“true”和processUncoveredFilesFromWhitelist =“true”之间有什么区别?
@s_bergmann:你想使用processUncoveredFilesFromWhitelist。如果它不起作用(遗留代码),则使用addUncoveredFilesFromWhitelist