我有一个(gradle + kotlin)春季启动项目,其中包含多个DTO,配置类,常量等,我不想在测试覆盖率分析期间进行分析。
我可以使用一种方便的Java符号吗?
答案 0 :(得分:1)
您说您正在使用Kotlin和Gradle。因此,我假设您正在使用jacoco进行测试。
这是jacoco涵盖的案例之一。
jacocoTestReport {
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: ['**/*Application**'])
})
}
}
答案 1 :(得分:0)
这就是最终为我工作的原因。不得不以一种非常古怪的方式编写一些自定义的自定义过滤逻辑,但这确实奏效了。
赞扬@Min Hyoung Hong的答案将我带入正确的轨道。
build.gradle.kts
tasks {
withType<KotlinCompile<KotlinJvmOptions>> {
kotlinOptions.freeCompilerArgs = listOf("-Xjsr305=strict")
kotlinOptions.jvmTarget = "1.8"
}
withType<JacocoReport> {
reports {
xml.isEnabled = false
csv.isEnabled = false
html.destination = file("$buildDir/jacocoHtml")
}
afterEvaluate {
val filesToAvoidForCoverage = listOf(
"/dto",
"/config",
"MyApplicationKt.class"
)
val filesToCover = mutableListOf<String>()
File("build/classes/kotlin/main/app/example/core/")
.walkTopDown()
.mapNotNull { file ->
var match = false
filesToAvoidForCoverage.forEach {
if (file.absolutePath.contains(it)) {
match = true
}
}
return@mapNotNull if (!match) {
file.absolutePath
} else {
null
}
}
.filter { it.contains(".class") }
.toCollection(filesToCover)
classDirectories = files(filesToCover)
}
}
}
答案 2 :(得分:-1)
我不知道您使用哪种工具覆盖测试类,但是here是如何从jacoco的测试覆盖中排除类的示例。