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

Gradle、Kotlin、Junit5和Jacoco-报告覆盖率为0%,gradle,kotlin,jacoco,junit5,Gradle,Kotlin,Jacoco,Junit5,我们希望将Gradle与Kotlin和Jacoco(+JUnit 5)结合使用,以生成代码覆盖率报告 我们的项目目录树如下所示: jacoco { toolVersion = "0.7.9" reportsDir = file("$buildDir/reports") applyTo junitPlatformTest } jacocoTestReport { group = "Reporting" description = "Generate Jaco

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

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

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
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%的覆盖率。情况不应该是这样,因为我有一个测试用例,它为项目中的一个虚拟类执行所有方法

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


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

这很奇怪。。。将JUnit测试从TestXY重命名为XYTest后,它似乎可以工作。我一定错过了一些关于命名约定的限制。junit platform gradle插件使用标准的包含模式,除非明确配置:非常感谢!我错过了文档中的这一点。这个链接帮助了我:Marcin Stachniuk提到的URL现在是