Phpunit覆盖:'addUncoveredFilesFromWhitelist'和'processUncoveredFilesFromWhitelist'选项之间有什么区别?

d3m*_*ing 21 php phpunit

我正在尝试为特定目录设置phpunit的代码覆盖率.有人能告诉我有什么区别:

<filter>
    <whitelist>
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>
Run Code Online (Sandbox Code Playgroud)

<filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>
Run Code Online (Sandbox Code Playgroud)

<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">lib/</directory>
    </whitelist>
</filter>
Run Code Online (Sandbox Code Playgroud)

目前前两个选项将起作用(具有不同的覆盖数)但第三个选项将失败,其错误类似于如何将未覆盖的文件添加到Yii应用程序的PHPUnit代码覆盖率报告中.

刚刚开始使用phpunit,并希望了解这些白名单选项之间的差异.我阅读了关于此的官方文档,但我不确定我理解.

axi*_*iac 33

快速浏览php-code-coverage一下GitHub上的软件包源代码,可以看出真相:

  • 如果addUncoveredFilesFromWhitelist是,FALSE则代码覆盖率包含有关已加载和执行的文件的信息(仅包含包含代码的行); 在这种情况下忽略
    processUncoveredFilesFromWhitelist;
  • 如果addUncoveredFilesFromWhitelist是,TRUE则白名单中未加载和执行的文件也将包含在代码覆盖中:
    • 如果processUncoveredFilesFromWhitelist是,FALSE那么文件不会以任何方式处理; 所有行都将出现在代码覆盖中,因为没有被执行,即使是空行和仅包含注释的行; 这是完成任务的快捷方式;
    • 如果processUncoveredFilesFromWhitelist是,TRUE则包含文件并使用XDebug的代码覆盖功能(与实际运行的文件相同)仅将包含代码的行放入报告中; 这是一种缓慢勤奋的方式.

为默认值addUncoveredFilesFromWhitelist就是TRUEprocessUncoveredFilesFromWhitelistFALSE.这意味着白名单中未覆盖的文件(因为它们没有运行)使用快速方式及其覆盖率报告包含在报告中,而exact(0%)则使用略大于真实的.

但是,由于0任何东西仍然存在0%,它认为这是在报告中包含未覆盖文件的最佳方式.

  • 对我来说,在 PHPStorm 2017.3 中使用 `processUncoveredFilesFromWhitelist="true"` 运行 PHPUnit 6.5.6 的速度大约是 `processUncoveredFilesFromWhitelist="false"` 的两倍。 (2认同)

Jef*_*ert 6

所以我觉得我错了.以下是文档中有关它的内容:

(可选)通过在PHPUnit配置中设置addUncoveredFilesFromWhitelist ="true",可以将所有列入白名单的文件添加到代码覆盖率报告中(请参阅"为代码覆盖率包含和排除文件"一节).这允许包含尚未测试的文件.例如,如果要获取有关此类未覆盖文件的哪些行可执行的信息,还需要在PHPUnit配置中设置processUncoveredFilesFromWhitelist ="true"(请参阅​​"为代码覆盖率包含和排除文件"一节).

所以这里的答案是,adding未覆盖的文件将它们包含在覆盖率报告中,但实际上processing它们将收集更多信息.

原版的

看看塞巴斯蒂安的这个Twitter对话.从twitter的简洁性来看,它有点难以辨别,但它看起来addUncoveredFilesFromWhitelist可能只是processUncoveredFilesFromWhitelist提供遗留代码的相同功能的旧形式.

Twitter对话的内容是:

@ user1:在@phpunit中,addUncoveredFilesFromWhitelist ="true"和processUncoveredFilesFromWhitelist ="true"之间有什么区别?

@s_bergmann:你想使用processUncoveredFilesFromWhitelist.如果它不起作用(遗留代码),则使用addUncoveredFilesFromWhitelist