我有一个多模块项目和一些TestNG进行,覆盖它们。
我gradle这个配置是这样的:
subprojects { subproject ->
jacocoTestReport {
additionalSourceDirs = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
reports {
html.enabled = true
xml.enabled = true
csv.enabled = false
}
}
test {
useTestNG()
}
test.finalizedBy(project.tasks.jacocoTestReport)
}
在报告中,我希望看到基于来自主包(由sourceSets.main提供)源代码覆盖,但是从测试包中的所有Java类也包括在内。所以,覆盖率结果是无效的。
如何才能配置是固定的?
我所有的测试有一个命名模式,这样我就可以通过正则表达式排除它们:
jacocoTestReport {
additionalSourceDirs = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it, exclude: 'path/to/test/*Test.java')
})
}
reports {
html.enabled = true
xml.enabled = true
csv.enabled = false
}
}