我正在尝试收集由Maven运行的单元和集成测试的代码覆盖率指标,遵循SonarQube Maven plugin guide链接的指示。我相信我已经使用jacoco成功生成了覆盖率指标:我有文件jacoco.exec
和jacoco-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-reports
,sonar.junit.reportPaths
有什么区别?
答案 0 :(得分:0)
答案 1 :(得分:0)
可能显示的是合并数而不是细分数。我和gradle有同样的问题。另一个答案是指旧版的sonarqube。自v4.2起,sonar.phase
属性被删除。
以下是在更新版本中如何完成的链接: https://github.com/SonarSource/sonar-examples
我希望这会有所帮助。