![]() |
1
10
假设你有一些构造
你有两个分支
和两个条件
如果您有两个测试用例
您正在覆盖这两个分支,因为(cond1和cond2)的组合条件为false或true, 但你只覆盖cond1的全部,只覆盖cond2的一半,即75%的条件覆盖率。 要获得全面的条件覆盖,您需要进行额外的测试
编辑这两种工具都使用每行的分支信息计算覆盖率。 我在我的一些代码上运行了一个测试,“要覆盖的条件”(Sonarqube)的数量与Jacoco报告中的总“分支”数量相匹配,但我使用了Jacoco和Sonarqube/sonar java的最新版本。因此,除了名称,但度量值是/应该是相同的。 但考虑到你提供的数字,你的分析总体上似乎有些奇怪。不仅百分比值不同,绝对值也不同(Jacoco中有9个未覆盖分支,Sonarqube中有15个未覆盖分支)。 所以我检查了您使用的版本-jacoco 0.8.0和sonar java插件v4。11.0.11033,使用jacoco 0.7.9。 这个 release notes for Jacoco 0.8.0 阅读
因此,我在这里的最佳猜测是,Jacoco 0.8.0生成的报告过滤掉了一些提到的生成工件,从而有效地减少了分支的总数。然而,Sonar Java使用的是Jacoco 0.7.9,它没有过滤掉生成的工件,因此数字更高(覆盖率更低)。 也许您应该将jacoco版本降级到0.7.9或升级sonar java插件。 |