声纳虚假整体报道(jacoco)

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的路径.

我得到一个非常奇怪的图像: 在此输入图像描述

怎么可能整体覆盖率更低?

ors*_*har 6

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

从Sonar网站我看到:

默认情况下,如果未找到覆盖率报告,则JaCoCo插件不会为覆盖率指标设置任何值.通过设置以下属性,可以覆盖此行为以在缺少报告的情况下将覆盖率强制为0%: sonar.jacoco.reportMissing.force.zero=true


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

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