JaCoCo单元测试覆盖率反映为总体覆盖率

时间:2016-01-04 07:35:14

标签: sonarqube code-coverage jacoco sonar-runner

我使用SonarQube 4.5.4,SonarQube Runner版本为2.4。

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

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

在SonarQube仪表板中,它以奇怪的方式反映: Sonar dashboard snapshot

cevarage被视为整体/ IT覆盖,而不是UT覆盖。并且缺少UT覆盖,BTW也将重复设置为0%(并且它不是真的) 来自Sonar log的看起来像这样:

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添加为虚拟,并获得相同的结果。

1 个答案:

答案 0 :(得分:0)

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

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

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

注意:使用较新版本的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中的项目已损坏并且在每次评估后显示有效数据,请在新项目上尝试这些设置。