【问题标题】:Sonar cube not showing the test coverage percentage for Java project properlySonarqube 没有正确显示 Java 项目的测试覆盖率
【发布时间】: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 的工具,您可以轻松找到他们的谷歌上的配置。

标签: java sonarqube sonarqube-scan sonar-runner sonarqube5.1


【解决方案1】:

Sonarqube 和声纳扫描仪不提供生成代码覆盖率报告的工具。这应该使用 java 的 jacoco 或 .NET 的 opencover 等工具来完成。

然后,您可以使用 sonar.coverage.jacoco.xmlReportPaths 属性将 jacoco 的输出添加到声纳扫描仪。

因此您基本上需要以下步骤进行分析:

  1. 声纳扫描仪开始
  2. 恢复包
  3. 构建应用程序
  4. 使用代码覆盖率工具测试和计算应用的覆盖率
  5. 声纳扫描仪结束

【讨论】:

    【解决方案2】:

    我在尝试将 Sonar 与 Docker 结合使用时遇到了同样的情况。

    对我有用的是:

    1. 确保您已运行测试 [您可以使用 mvn test]
    2. 确保 JaCoCo 已生成覆盖率报告 [在我的案例中,报告是在文件夹 target\jacoco-report 中生成的]
    3. 设置以下指向您的 XML 报告的属性

    Sonar property to be set

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 2014-10-25
      • 2020-11-14
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 2013-09-18
      • 2014-04-06
      相关资源
      最近更新 更多