【问题标题】:JaCoCo Unit test coverage is reflected as Overall CoverageJaCoCo 单元测试覆盖率反映为整体覆盖率
【发布时间】:2016-04-07 19:04:49
【问题描述】:

我使用的是 SonarQube 4.5.4,SonarQube Runner 版本是 2.4。

我在sonar-project.properties 文件中定义了sonar.jacoco.reportPath=jacoco/jacoco-ut.exec(junit4 ant 任务的结果,它集成了 jacoco 作为覆盖工具)。

exec 文件看起来不错,它包含每个测试的所有覆盖率信息,我已经使用 EclEmma 2.3.2.201409141915 导入了它,并且所有覆盖率信息都在那里。

在 SonarQube 仪表板中,它以奇怪的方式反射:

cevarage 被视为整体/IT 覆盖范围,而不是 UT 覆盖范围。并且缺少 UT 覆盖率,顺便说一句,重复项也设置为 0%(这不是真的) 从声纳日志看起来是这样的:

08:24:34.604 INFO  - Sensor SurefireSensor done: 713 ms
08:24:34.604 INFO  - Sensor JaCoCoOverallSensor...
08:24:35.140 INFO  - Analysing /ibmshome/cc/cctlg/sonar/sonar/ens-14023/./.sonar/ATT_MO_API_TlgServer_ATT_TlgServer_module/jacoco-overall.exec
08:24:52.505 INFO  - No information about coverage per test.
08:24:52.505 INFO  - Sensor JaCoCoOverallSensor done: 17901 ms
08:24:52.505 INFO  - Sensor CoberturaSensor...
08:24:52.506 WARN  - Cobertura report not found at /ibmshome/ibms/ibms/target/site/cobertura/coverage.xml
08:24:52.506 INFO  - Sensor CoberturaSensor done: 1 ms
08:24:52.506 INFO  - Sensor JaCoCoSensor...
08:24:52.815 INFO  - Analysing /ibmshome/ibms/ibms/ccirp/proj/sbmsIrd1000/jacoco/jacoco-ut.exec
08:25:04.966 INFO  - No information about coverage per test.
08:25:04.966 INFO  - Sensor JaCoCoSensor done: 12460 ms

我找了很久的解决方案,也尝试更改属性并将sonar.jacoco.itReportPath添加为虚拟对象,也得到了相同的结果。

【问题讨论】:

    标签: sonarqube code-coverage jacoco sonar-runner


    【解决方案1】:

    您在 SonarQube 中看到了整体覆盖率,因为您可能启用/设置了集成测试小部件。您不可能在 UT 或 IT 测试中看到 0%,但总体上显示了一些有效的 %,而不是 0。

    根据您粘贴的快照,您似乎是 NOT 设置 sonar.tests=src/test/java 或 sonar.java.tests=some/test/java 即一些有效的文件夹值您所有的测试源代码所在的位置。

    要获得覆盖范围,请确保设置 sonar.jacoco.reportPath=full/relative/path/to/the/jacoco-ut-file.exec 并设置 sonar.sources、sonar.tests、sonar。 jacoco.itReportPath=full/relative/path/to/jacoco-nonUT-actually-IT.exec 文件

    注意:随着较新版本的 SonarQube,大多数属性现在都在属性中嵌入了 java/语言名称,即 sonar.binaries 现在可能是 sonar.java.binaries 或 sonar.groovy.binaries

    请参阅设置 sonar.java.sources、sonar.java.tests、sonar.java.binaries、sonar.jacoco.reportPath 但这些都可以工作,因为它的 sonar.jacoco.itReportPath 为正确的值会有所帮助!

    此外,如果由于某种原因您在 SonarQube 中的项目已损坏并且现在在每次评估后显示有效数据,请在新项目上尝试这些设置。

    【讨论】:

    • 以上所有配置都存在于我的 sonar-project.properties 文件中。我打开了一个新项目,但重复和 UT 覆盖率仍然为 0%,然后我尝试从排除设置中删除与代码共变和重复相关的所有条目,再次运行它,现在显示所有测量值,UT 覆盖率和重复。排除设置似乎存在错误。
    • 您的排除属性中的模式是什么
    • 错误地出现了如下条目:**FolderName/**filseSuffix** 我已将其更改为 **/FolderName/*fileSuffix* 并且它正在工作,也适用于重复
    • 是的,有时这些拼写错误很难想象。很高兴你得到它。如果我的朋友这样做,我会说:“Harwa diya India tune aaj !!!”,只是为了好玩。
    猜你喜欢
    • 2013-07-05
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2023-04-07
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多