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

Gradle、Kotlin、Junit5和Jacoco-报道覆盖率为0%

朱阳曜
2023-03-14

我们希望将Gradle与静态编程语言和Jacoco(JUnit 5)结合使用来生成代码覆盖率报告。

我们的项目目录树如下所示:

< code>project/{src,test}/main/kotlin...

我们的build.gradle文件如下所示:

jacoco {
    toolVersion = "0.7.9"
    reportsDir = file("$buildDir/reports")
    applyTo junitPlatformTest
}
jacocoTestReport {
    group = "Reporting"
    description = "Generate Jacoco coverage report."
    classDirectories = fileTree(
            dir: "$buildDir/classes/kotlin/main"
    )
    def coverageSourceDirs = [
            "src/main/kotlin"
    ]
    additionalSourceDirs = files(coverageSourceDirs)
    sourceDirectories = files(coverageSourceDirs)
    executionData = files("$buildDir/jacoco/junitPlatformTest.exec")
    reports {
        xml.enabled = true
        html.enabled = true
        csv.enabled = true
    }

}
test {
    jacoco {
        append = false
        destinationFile = file("$buildDir/jacoco/junitPlatformTest.exec")
        includeNoLocationClasses = true
    }
}
test.dependsOn junitPlatformTest

通过这种配置,Jacoco生成了一个html报告,并将其放在build/report/test/html下。但是,它显示了0%的覆盖率。情况不应该是这样,因为我有一个测试用例,它为项目中的单个虚拟类执行了所有方法。

我浏览了几个帖子,例如:

  • http://vgaidarji.me/blog/2017/12/20/how-to-configure-jacoco-for-kotlin-and-java-project/
  • Jacoco报告在Android项目中,单元测试对静态编程语言类的覆盖率为0
  • JaCoCo返回0%覆盖静态编程语言和Android 3.0

然而,我还没有找到适合我的解决方案。

共有1个答案

张亦
2023-03-14

我最近在从junit 4升级时遇到了这个问题-

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}
 类似资料:
  • Jacoco插件在jenkins报告中显示0%的覆盖率,但当我在本地系统中运行相同的命令时,Jacoco会正确生成报告。我正在使用以下命令: mvn-s xyz/settings.xml-f xyz/xyz/pom.xml清洁安装org.jacoco 所以当我在jenkins中运行这个命令时,它会生成错误的报告。我已经检查了它在工作区目录对应的项目在詹金斯。它显示每个项目的0%覆盖率。但是当我在本

  • 我将IntelliJ与Kotlin一起使用,并使用JaCoCo来计算测试覆盖率。在IntelliJ中,我的代码被覆盖了,但我没有看到我的Kotlin类的代码被覆盖的百分比。我只能在Java中看到它: 另一方面,我的Kotlin类被覆盖,我的代码是绿色或红色。此外,当我单击覆盖率窗口中的时,它会生成HTML页面,并且所有内容都很好地涵盖了。 你能告诉我为什么我在科特林课上看不到线覆盖率吗?

  • 当运行Gradle的Jacoco插件时,我在一组选定的类上得到零代码覆盖率报告。我已经确认测试这些类的所有单元测试都已成功运行。 非常有趣的是,EclEmma在Eclipse中生成了正确的代码覆盖率结果。我已经确认这两个工具使用的是相同版本的Jacoco。 我想知道这两种工具的区别是什么?我需要Gradle Jacoco插件的额外配置吗。 编辑:我的Gradle Jacoco输出显示“com类的执

  • 我在测试android以创建覆盖率测试报告时遇到问题。我使用./gradlew createDebugCoverageReport命令创建覆盖率报告。已创建报告,但所有测试的结果均为%0。第一个设备已植根,但第二个设备未植根。我们使用这两个设备测试勺子,并查看勺子输出。所以这两个设备一起使用。问题:当我们使用第一个设备(根设备)运行此命令时,将按预期创建所有覆盖率测试结果,但当我们同时使用两个设备

  • 我们有一个Android项目,我们使用Powermock进行一些测试用例,使用Jacoco进行覆盖率报告。我们注意到,我们的一些类返回0%覆盖率,尽管它们确实被覆盖。我们还观察了下面关于受影响类的消息。 一些在线搜索显示Powermock和Jacoco玩得不好,离线仪器是一种可能的解决方法。 之前有人使用过android项目的gradle离线插装脚本吗?

  • 问题内容: 从不同的代码库执行业务测试时,我必须获得应用程序的代码覆盖率。 我使用:Maven作为我的构建Jbehave作为我的测试框架。测试是用Java编写的。 我的应用程序是部署在tomcat上的一组war文件。 应用程序代码库与测试代码库是分开的。 为了获得覆盖范围,我遵循以下步骤。 1使用maven编译测试代码。 2将应用程序类从其构建位置($ {app.code.dir} / targe