ors*_*har 6 java jacoco sonarqube
我在多模块Java8项目上运行Jacoco和Sonar.我在每个模块中都有单元测试并节省资源我将所有"集成测试"收集到一个"integration-tests-runner"中并在那里运行它们(在测试之前和之后包装它们).
测量覆盖率时,UT会为每个模块目标/ jacoco-ut.exec生成exec文件,而IT会生成一个exec文件:/target/jacoco-it.exec.
当我运行声纳时,我重用那些exec文件,给出了jacoco-it.exec的路径.
我得到一个非常奇怪的图像:

怎么可能整体覆盖率更低?
我发现了问题和解决方案.
默认情况下,如果未找到覆盖率报告,则JaCoCo插件不会为覆盖率指标设置任何值.通过设置以下属性,可以覆盖此行为以在缺少报告的情况下将覆盖率强制为0%:
sonar.jacoco.reportMissing.force.zero=true
这意味着没有任何测试的模块会跳过UT分析.由于我设置了sonar.jacoco.itReportPath父pom,因此所有模块都进行了分析,以进行集成测试覆盖和整体覆盖.
底线:sonar.jacoco.reportMissing.force.zero=true从父pom 设置属性修复了数字.