当前位置: 首页 > 知识库问答 >
问题:

Jacoco 0%代码覆盖率

夏侯衡
2023-03-14

我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。

格拉德尔

sonarqube {
  properties {
    property "sonar.binaries", "build/intermediates/classes/release"
    property "sonar.java.binaries", "build/intermediates/classes/release"
    property "sonar.java.test.binaries", "build/intermediates/classes/test/release"
    property "sonar.sources", "src"
    property "sonar.junit.reportsPath", "build/reports/tests/release"
    property "sonar.java.junit.reportsPath", "build/reports/tests/release"
    property "sonar.android.lint.report", "build/outputs/lint-results.xml"
    property "sonar.jacoco.reportPath", "${project.buildDir}/jacoco/testReleaseUnitTest.exec"
  }
}

当我打开索引时。htmlinsidebuild/reports/tests/release然后我可以看到成功的单元测试。

我在Jenkins环境中运行sonarqube作为gradle任务。我的SonarQube实例显示代码气味,除了代码覆盖率之外的所有内容都显示为0%。

使现代化

我确实为代码覆盖率创建了一个index.html,但它们都显示0%:

app/build/reports/jacoco/jacotestdebugunittestreport/html/index。html

使现代化

仍然获得0%,但这是我目前的情况:

android {
    ...
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            testCoverageEnabled true
        }
        debug {
            testCoverageEnabled true
        }
    }

    jacoco {
        version "0.7.8.201607051106"
    }
}

共有2个答案

杜哲彦
2023-03-14

我用这个插件解决了这个问题。我看到的问题是Jacoco试图寻找仪器测试androidTests,而不是单元测试Tests。我使用的插件确保它事先运行了测试,根据测试创建了一个报告,并使Jacoco指向这些测试。

阎阳
2023-03-14

SonarQube文件摘录:

Java插件重用报告;它不会生成它们。因此,在尝试将分析配置为导入这些报告之前,请确保它们已正确生成且非空。

由于您似乎没有使用Gradle Jacoco插件,SonarQube可能会报告0%,因为您尚未生成报告。您需要将Jacoco添加到构建中,并确保您已经输入了生成报告的路径(sonar.Jacoco.reportPath),以便它可以读取该报告。

要将Jacoco添加到项目中,您需要将以下内容添加到build中。格雷德尔

//...
apply plugin: "jacoco"
//...
jacoco {
    toolVersion = "0.7.6.201602180812"
    //Note: unless "reportsDir" is set here, default is “$buildDir/reports/jacoco”
}

您还需要确保以下几点:首先,您需要确保执行jacocoTestReport任务(可以自己将其添加到任务中,也可以将任务添加到gradle调用中)。其次,您需要通过设置sonar来确保SonarQube正在查找测试报告的正确位置。杰科科。reportPath指向您的/reports/jacoco目录(默认为target/jacoco.exec,因此它找不到关于默认设置的报告)。

 类似资料:
  • 代码覆盖是查找未被测试执行的代码区域的过程。不过要记住的是这并不能说明你测试代码的有效性。 在requirements.txt文件中添加依赖包: coverage==4.4.2 然后,我们在manage.py中新增一个命令: import coverage COV = coverage.coverage( branch=True, include='project/*',

  • 这是一个重要的可量化指标,如果代码覆盖率很高,你就可以放心的修改代码,在发版本的时候也能睡个安稳觉。否则就是拆东墙补西墙,陷入无尽的 bug 诅咒中。 那么在 OpenResty 里面如何看到代码覆盖率呢?其实很简单,使用 LuaCov 可以很方便的实现。 我们先了解下 LuaCov,这是一个针对 Lua 脚本的代码覆盖率工具,通过 luarocks 来安装: luarocks install l

  • 我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j

  • 问题内容: 我正在使用Mocha测试我的NodeJS应用程序。我无法弄清楚如何使用其代码覆盖功能。我尝试使用Google搜索,但没有找到任何合适的教程。请帮忙。 问题答案: 您需要一个额外的库来覆盖代码,而伊斯坦布尔的强大和便捷将使您震惊。通过Mocha测试后,请尝试以下操作: 现在,只需将命令nyc放在现有测试命令的前面,例如:

  • 我正在为我的grails 3.1.6项目添加cobertura代码覆盖率,覆盖率报告似乎有点少,即我有单元测试用例(pos和neg两种情况)来覆盖if块,但报告说没有覆盖if块。gradle:2.13 Groovy:2.4.5 Grails:3.1.6 cobertura gradle Plugin:net.saliman:gradle-cobertura-plugin:2.3.2 这是我的代码

  • 我执行Jacoco单元测试代码覆盖,它显示了单元测试中需要覆盖的所有代码。 如何避免测试覆盖显示ui代码,比如onCreate()、onAttach()中的代码(fragment)。我不想要视图的代码覆盖率,但jacoco也给出了这一点。我有办法消除它吗?