Sonarqube 没有正确显示 Java 项目的测试覆盖率
Posted
技术标签:
【中文标题】Sonarqube 没有正确显示 Java 项目的测试覆盖率【英文标题】:Sonar cube not showing the test coverage percentage for Java project properly 【发布时间】:2019-11-30 09:39:19 【问题描述】:我有一个基于 spring 的 java 项目,我的测试放在 /src/test/java 文件夹中。我尝试通过
在本地运行声纳立方体docker run -d --name sonarqube -p 9000:9000 sonarqube
为了分析测试覆盖率的百分比。即使我的项目中有很多测试,测试覆盖率也显示为 0%。单元测试的数量显示为 8,尽管还有更多。这是截图
这是我的常规设置
有人知道如何配置声纳立方体以反映测试覆盖率吗?
【问题讨论】:
你用的是哪个代码覆盖工具? 我正在使用声纳立方体 Sonarqube 是分析工具。我说的是 jacoco、clover 等代码覆盖工具。你可以在这里阅读更多内容 - dzone.com/articles/code-coverage-tools-comparison 我不知道 JaCoCo。我假设声纳立方体会变魔术。我不知道如何配置 JaCoCO。我想知道如何配置它并查看结果。你能提供一些相关的信息吗? 您可以点击此链接并尝试配置 jacoco 以进行代码覆盖 - petrikainulainen.net/programming/maven/… 此链接具有 maven 配置...但如果您使用其他类似 ant 或 gradle 的工具,您可以轻松找到他们的谷歌上的配置。 【参考方案1】:Sonarqube 和声纳扫描仪不提供生成代码覆盖率报告的工具。这应该使用 java 的 jacoco 或 .NET 的 opencover 等工具来完成。
然后,您可以使用 sonar.coverage.jacoco.xmlReportPaths
属性将 jacoco 的输出添加到声纳扫描仪。
因此您基本上需要以下步骤进行分析:
-
声纳扫描仪开始
恢复包
构建应用程序
使用代码覆盖率工具测试和计算应用的覆盖率
声纳扫描仪结束
【讨论】:
【参考方案2】:我在尝试将 Sonar 与 Docker 结合使用时遇到了同样的情况。
对我有用的是:
-
确保您已运行测试 [您可以使用 mvn test]
确保 JaCoCo 已生成覆盖率报告 [在我的案例中,报告是在文件夹 target\jacoco-report 中生成的]
设置以下指向您的 XML 报告的属性
Sonar property to be set
【讨论】:
以上是关于Sonarqube 没有正确显示 Java 项目的测试覆盖率的主要内容,如果未能解决你的问题,请参考以下文章
SonarQube 单元测试报告不显示 Javascript 文件