【问题标题】:Gradle, Kotlin, Junit5 and Jacoco - 0% coverage reportedGradle、Kotlin、Junit5 和 Jacoco - 报告的覆盖率为 0%
【发布时间】:2018-05-18 09:32:46
【问题描述】:

我们希望将 Gradle 与 Kotlin 和 Jacoco (+JUnit 5) 结合使用来生成代码覆盖率报告。

我们的项目目录树如下:

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/reports/test/html 下。但是,它显示我的覆盖率为 0%。这不应该是这样,因为我有一个测试用例为项目中的单个虚拟类执行所有方法。

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

但是,我还没有找到适合我的解决方案。

【问题讨论】:

标签: gradle kotlin jacoco junit5


【解决方案1】:

我最近在升级表单 junit 4 -> 5 时遇到了这个问题。在我的情况下,我不得不重新安排依赖项的声明,如此处所述。如果您更改为这种格式,您应该会再次看到正确报告的覆盖率,而无需更改任何其他配置。

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2018-09-09
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多