艸雨田* 2019-01-15 16:50 采纳率: 0%
浏览 5968

sonarqube 扫描使用Junit做单元测试的代码覆盖率为0?

代码用Junit做单元测试后提交至svn,checkout到本地进行静态代码检查,视图中覆盖率显示为0.

project.properties文件配置如下:

Required metadata

sonar.projectKey=EmailTestssh
sonar.projectName=EmailTestssh
sonar.projectVersion=V1.0

Comma-separated paths to directories with sources (required)

sonar.sources=src
#sonar.exclusions=WebRoot\js\echarts.js
sonar.java.binaries=target/classes

Language

#sonar.language=java

Encoding of the source files

sonar.sourceEncoding=UTF-8

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 17:39
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在SonarQube中,覆盖率默认是基于Java代码的,如果你使用JUnit做单元测试,并将结果提交到SVN,那么覆盖率应该反映的是你使用的JUnit工具所覆盖的代码。但是,如果JUnit工具没有正确地生成覆盖率报告,或者你的代码库结构与JUnit测试不匹配,那么覆盖率可能会出现异常。

    以下是一些可能导致覆盖率不正确的原因:

    1. JUnit工具的问题:确保你的JUnit工具(例如Maven插件、Gradle插件等)正在正确地生成覆盖率报告。
    2. 测试框架和JUnit之间的兼容性问题:某些情况下,不同的测试框架可能无法很好地集成在一起,导致覆盖率计算出现问题。
    3. 代码结构和JUnit测试的不一致:确保你的JUnit测试能够正确地运行并产生覆盖率报告。这可能涉及到调整测试类的命名空间、依赖关系等问题。
    4. JUnit测试未被编译或部署:如果JUnit测试未被编译或部署到应用程序中,则它们不会被SonarQube扫描器识别为被覆盖的代码部分。
    5. JUnit测试未通过CI/CD流程:如果JUnit测试未通过持续集成/持续部署(CI/CD)过程,则覆盖率可能不会反映实际的覆盖率情况。

    解决这些问题的方法包括但不限于:

    • 确保JUnit工具已正确安装并且可以正常工作。
    • 检查JUnit测试是否被正确地编译和部署。
    • 确认JUnit测试是否已经通过了CI/CD流程。

    此外,你还可以尝试清理SonarQube的缓存,清除所有不必要的数据,然后重新启动SonarQube以获取最新的覆盖率信息。

    评论

报告相同问题?