Gradle Jacoco 来源包括测试
Gradle Jacoco sources include tests
我有一个多模块项目和一些 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
}
}
我有一个多模块项目和一些 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
}
}