声纳虚假整体报道(jacoco)

时间:2015-03-12 18:53:57

标签: java sonarqube jacoco

我在多模块Java8项目上运行Jacoco和Sonar。 我在每个模块中都进行了单元测试,为了节省资源,我收集了所有的集成测试'进入一个" integration-tests-runner"并在那里运行它们(在测试之前和之后包装它们)。

测量覆盖率时,UT会为每个模块目标/ jacoco-ut.exec生成exec文件,而IT会生成一个exec文件:/target/jacoco-it.exec。

当我运行声纳时,我重用那些exec文件,给出了jacoco-it.exec的路径。

我得到一个非常奇怪的图像: enter image description here

整体覆盖率如何降低?

2 个答案:

答案 0 :(得分:6)

我发现了问题和解决方案。

From Sonar website I see this

  

默认情况下,当找不到覆盖率报告时,JaCoCo插件会   没有为覆盖率指标设置任何值。这种行为可以   覆盖以在缺少报告的情况下强制覆盖率为0%   设置以下属性:   sonar.jacoco.reportMissing.force.zero=true


这意味着没有任何测试的模块会跳过UT分析。 由于我已经从父pom设置了sonar.jacoco.itReportPath,因此所有模块都进行了集成测试覆盖率分析,以及整体覆盖率。

底线:从父pom设置属性sonar.jacoco.reportMissing.force.zero=true修复了这些数字。

答案 1 :(得分:0)

为什么这很奇怪?单元和集成测试执行代码并且某些执行的代码块重叠。换句话说,单元和集成测试所涵盖的代码并不是不相交的,因此您不能简单地添加它们。