我们希望将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%的覆盖率。这不应该是这种情况,因为我有一个测试用例可以为项目中的单个虚拟类提供所有方法。
我经历了几个帖子,例如:
然而,我找不到适用于我的解决方案。