我一直试图用一段时间来解决联合报告覆盖面的问题,而且我似乎无法找到与我的特定问题相关的任何有用信息。
实施细则:
我配置了jacoco-maven-plugin并正确生成单元和集成测试报告,包括通过sonar-jacoco-listener模块进行测试。
但是,当Jenkins的SonarQube扫描仪(v2.8)执行分析时,名为JacocoOverallSensor的传感器会检查第三个文件jacoco-overall.exec,该文件没有覆盖测试信息。
因此,我实际上并没有在我的项目的SonarQube Coverage选项卡中呈现任何Coverage by Test信息,只有每个类的行数和条件。
扫描仪的示例输出:
INFO: Sensor SurefireSensor
INFO: parsing /var/lib/jenkins/workspace/evo-sonar-test/target/junit-reports
INFO: Sensor SurefireSensor (done) | time=160ms
INFO: Sensor JaCoCoSensor
INFO: Analysing /var/lib/jenkins/workspace/evo-sonar-test/target/jacoco/jacoco-unit.exec
INFO: Information about coverage per test has been collected.
INFO: Sensor JaCoCoSensor (done) | time=887ms
INFO: Sensor JaCoCoItSensor
INFO: Analysing /var/lib/jenkins/workspace/evo-sonar-test/target/jacoco/jacoco-itest.exec
INFO: Information about coverage per test has been collected.
INFO: Sensor JaCoCoItSensor (done) | time=365ms
INFO: Sensor JaCoCoOverallSensor
INFO: Analysing /var/lib/jenkins/workspace/evo-sonar-test/target/jacoco/jacoco-unit.exec
INFO: Analysing /var/lib/jenkins/workspace/evo-sonar-test/target/jacoco/jacoco-itest.exec
INFO: Analysing /var/lib/jenkins/workspace/evo-sonar-test/.sonar/jacoco-overall.exec
INFO: No information about coverage per test.
INFO: Sensor JaCoCoOverallSensor (done) | time=333ms
根据我对JacocoOverallSensor的包/类的理解,这个jacoco-overall.exec应该是生成的集成和单元jacoco报告的合并副本。 jacoco-overall.exec文件正在创建并填充数据,这意味着我的单元/集成测试正在合并,但似乎只有该文件中缺少Coverage by Test信息。
此时,我很难过为什么会这样。我进行了搜索和搜索,但我似乎找不到任何人只有jacoco-overall.exec中的测试覆盖问题而不是单元/集成exec文件中的问题。
问题:
作为参考,我的声纳配置(在Sonarqube Scanner for Jenkins中配置):
# Data locations to be analyzed
sonar.sources=src/main
sonar.tests=src/test
sonar.java.binaries=target/classes
sonar.java.libraries=target/libs
sonar.java.test.binaries=target/test-classes
sonar.java.test.libraries=target/libs
sonar.junit.reportsPath=target/junit-reports
# Compiler configuration
sonar.java.source=1.7
sonar.language=java
sonar.sourceEncoding=UTF-8
# Jacoco configuration
sonar.java.coveragePlugin=jacoco
sonar.jacoco.reportMissing.force.zero=true
sonar.jacoco.reportPath=target/jacoco/jacoco-unit.exec
sonar.jacoco.itReportPath=target/jacoco/jacoco-itest.exec
我很乐意根据要求发布更多信息,但是在这一点上,我对这个话题的信息感到迷失/不知所措,我不确定还有什么对人们有帮助。问,你会收到。