如何使用Sonarqube Maven插件收集集成测试覆盖率报告?

时间:2017-07-05 20:43:55

标签: maven sonarqube code-coverage jacoco-maven-plugin

我正在尝试收集由Maven运行的单元和集成测试的代码覆盖率指标,遵循SonarQube Maven plugin guide链接的指示。我相信我已经使用jacoco成功生成了覆盖率指标:我有文件jacoco.execjacoco-it.exec,虽然我不知道如何查看它们以找到有用的信息,但它们确实有不同的大小具有不同数量的单元和集成测试,FWIW。

从那里我可以运行,例如mvn sonar:sonar将单元测试覆盖率上传到我的本地服务器,但我无法上传集成测试覆盖率。在我的pom文件中,我有一个属性<sonar.junit.reportPaths>target/failsafe-reports,target/failsafe-reports</sonar.junit.reportPaths>,似乎什么都不做。我已经尝试了sonar-maven-plugin(版本3.3.0.603)的最新官方和codehaus版本。我正在使用最新的官方SonarQube Docker图像(v.6.4),根据SQ UI显然包含SonarQube版本6.3.1(为什么会出现差异?)。

我在运行mvn sonar:sonar时在控制台输出中注意到,它说

[INFO] Sensor SurefireSensor [java]
[INFO] parsing /home/jason/.../target/surefire-reports
[INFO] Sensor SurefireSensor [java] (done) | time=57ms
[INFO] Sensor JaCoCoSensor [java]
[INFO] Analysing /home/jason/.../target/jacoco-it.exec
[INFO] Analysing /home/jason/.../target/jacoco.exec
[INFO] Analysing /home/jason/.../target/sonar/jacoco-merged.exec

所以它正在接收两个jacoco覆盖率报告,但在UI中仅显示单元测试。由于该输出提及target/surefire-reports但从未提及failsafe-reports,作为实验,我尝试将所有内容从failsafe-reports复制到surefire-reports,并且IT信息存在于SQ UI中,但这是一个黑客,我发现了一个类似的SO问题,建议配置故障保护输出到surefire-reports以这种方式欺骗SQ。

所以我的最终问题是如何让SQ上传IT信息?更简单的问题是,如何告诉它解析failsafe-reportssonar.junit.reportPaths有什么区别?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

可能显示的是合并数而不是细分数。我和gradle有同样的问题。另一个答案是指旧版的sonarqube。自v4.2起,sonar.phase属性被删除。

以下是在更新版本中如何完成的链接: https://github.com/SonarSource/sonar-examples

我希望这会有所帮助。