首页 文章

PHPUnit合并的覆盖率报告未显示方法左括号

提问于
浏览
3

好的,继承人的情景 .

我们有两个独立的Zend项目,它们共享一些共同的代码 . 公共代码包含在每个项目中扩展的抽象类和控制器 .

目前,公共代码被sym链接到每个项目中 .

我们在每个项目中都有单元测试,它们涵盖了公共代码中的一些抽象类 .

我已经配置了phpunit,以便它包含来自磁盘上正常位置的公共代码(而不是sym链接的位置) .

我使用--coverage-php生成覆盖文件,然后使用phpcov合并它们 .

该报告显示了项目和公共代码,但是,在许多常见类中,每个方法的开头大括号显示为可执行代码而没有覆盖 . 所以我们的报告低于应有的水平 .

我附上了HTML报告的示例图像 .

enter image description here

难道我做错了什么?

编辑:经过多一点挖掘后,即使没有合并报告,公共代码也会将方法的开头大括号显示为可执行代码而无需覆盖 .

另一个编辑:我想我找到了原因(但不是解决方案) . 在包含在测试套件中但未在单元测试中涵盖的类中,所有方法行(包括开括号)都标记为已执行但未涵盖 .

因此,在我的覆盖率报告中,公共单元测试报告在图像中的文件的第35行有一个数组条目,但其他项目没有此条目 . 合并后,其他行被标记为已覆盖,但这一行不是 . 所以问题在于未覆盖的文件,将开口大括号显示为未覆盖的行,而不是死代码 .

1 回答

  • 0

    正如您所描述的那样,我遇到了使用 phpcov 合并两个报告的相同问题 . 我还遇到了一些问题,例如在一个测试套件覆盖的文件中打开括号,但未在另一个测试套件中覆盖的文件显示为未覆盖的可执行行 .

    要使合并的报告正确显示,需要正确设置 addUncoveredFilesFromWhitelistprocessUncoveredFilesFromWhitelist 选项(https://stackoverflow.com/a/29042391/2220615包含很好的解释) .

    addUncoveredFilesFromWhitelist 的默认值为 TRUE ,因此白名单中的所有文件都将添加到报表中,但 processUncoveredFilesFromWhitelist 默认为 FALSE ,因此s文件中未包含在特定套件中的每一行都标记为可执行文件并且未被覆盖 .

    为了解决这个问题,我为两个覆盖率报告设置了 processUncoveredFilesFromWhitelistTRUE ,然后合并的报告正确地将这些行显示为死代码而不是未覆盖 .

相关问题