我正在使用gradle jacoco plugin获取测试和集成测试的覆盖率报告。集成测试的源由test-sets plugin定义。 为了使测试和集成测试都包含在报告中,我从this post推论出,我应该在* .exec文件上使用include来调用executeData。现在,我试图弄清楚如何从jacoco报告(和分析)中排除单个类。 Filter JaCoCo coverage reports with Gradle指向使用afterEvaluate并更改classDirectories,但这在我使用它时会生成一个空报告。
plugins {
id 'org.unbroken-dome.test-sets' version '1.5.0'
}
apply plugin: 'java'
apply plugin: 'jacoco'
sourceSets {
main {
java {
srcDirs = ['jsrc']
}
}
}
testSets {
integrationTest {
dirName = 'integration-test'
}
}
jacocoTestReport {
executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
// commented because causes the report to be empty
//afterEvaluate {
// classDirectories = files(classDirectories.files.collect {
// fileTree(dir: it, exclude: ['**/TheOneClassToExclude.*'])
// })
//}
}
在这种情况下,我将Gradle 4.4与JDK7一起使用。
答案 0 :(得分:0)
深入研究之后:
sourceSets sourceSets.main
,该源集解决了我遇到的几乎所有问题。不再清除构建/类中的文件。固定的build.gradle:
plugins {
id 'org.unbroken-dome.test-sets' version '1.5.0'
}
apply plugin: 'java'
apply plugin: 'jacoco'
sourceSets {
main {
java {
srcDirs = ['jsrc']
}
}
}
testSets {
integrationTest {
dirName = 'integration-test'
}
}
jacocoTestReport {
sourceSets sourceSets.main // important!
executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it, exclude: ['**/path/to/package/*'])
})
}
}