Gradle Jacoco-覆盖率报告包括配置中排除的类
我在一个项目中添加了一组没有测试的源代码,我不希望它们破坏我的测试覆盖率统计数据。我用下一种方式配置了Jacoco:Gradle Jacoco-覆盖率报告包括配置中排除的类,gradle,jacoco,Gradle,Jacoco,我在一个项目中添加了一组没有测试的源代码,我不希望它们破坏我的测试覆盖率统计数据。我用下一种方式配置了Jacoco: test { jacoco{ excludes = ['org/bla/**'] includes = ['com/bla/**'] append = false } } jacocoTestReport { dependsOn test description = "Generate Jacoco
test {
jacoco{
excludes = ['org/bla/**']
includes = ['com/bla/**']
append = false
}
}
jacocoTestReport {
dependsOn test
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled true
html.enabled true
}
classDirectories = fileTree(dir: 'build/classes/main', include: 'com/bla/**')
sourceDirectories = fileTree(dir: 'scr/main/java', include: 'com/bla/**')
}
但无论如何,在生成报告时,Jacoco还包括来自org.bla
有人能帮我吗
编辑
经过一些调试后,所有默认输出似乎都以私有方法添加到org.gradle.testing.jacoco.tasks.JacocoReport#classDirectories
org.gradle.testing.jacoco.plugins.JacocoPlugin#addDefaultReportTasks
在使用此类代码时可见:
jacocoTestReport {
classDirectories = files('build/classes/main/com/bla')
println("-----------------------------------------------------------")
getAllClassDirs().each { File file ->
println(file.absolutePath)
}
println("-----------------------------------------------------------")
getAdditionalClassDirs().each{ File file ->
println(file.absolutePath)
}
}
jacocoTestReport << {
println("-----------------------------------------------------------")
getAllClassDirs().each { File file ->
println(file.absolutePath)
}
println("-----------------------------------------------------------")
getAdditionalClassDirs().each{ File file ->
println(file.absolutePath)
}
}
Output
-----------------------------------------------------------
<path_here>\build\classes\main\com\bla
-----------------------------------------------------------
....more text here
-----------------------------------------------------------
<path_here>\build\classes\main\com\bla
<path_here>\build\classes\main
<path_here>\build\resources\main
-----------------------------------------------------------
jacocoTestReport{
classDirectories=文件('build/classes/main/com/bla')
println(“-----------------------------------------------------------------------”)
getAllClassDirs()。每个{文件->
println(file.absolutePath)
}
println(“-----------------------------------------------------------------------”)
getAdditionalClassDirs()。每个{File->
println(file.absolutePath)
}
}
jacocoTestReport
println(file.absolutePath)
}
println(“-----------------------------------------------------------------------”)
getAdditionalClassDirs()。每个{File->
println(file.absolutePath)
}
}
输出
-----------------------------------------------------------
\build\classes\main\com\bla
-----------------------------------------------------------
……这里有更多的文字
-----------------------------------------------------------
\build\classes\main\com\bla
\build\classes\main
\build\resources\main
-----------------------------------------------------------
所以-问题是:是否可以以某种方式覆盖
org.gradle.testing.jacoco.plugins.JacocoPlugin#addDefaultReportTasks
方法,或者完全覆盖org.gradle.testing.jacoco.plugins.JacocoPlugin
类?好的,找到了一个解决方法:
jacocoTestReport.doFirst{
classDirectories = files('build/classes/main/com/bla')
}
这将覆盖JacocoPlugin类设置的类目录。如果您有一个任务名称不是
test
如果运行单元测试,您应该能够生成报告,将以下任务添加到build.gradle文件中:
jacocoTestReport {
group = "Reporting"
description = "Generates Jacoco coverage reports for unit tests"
executionData = files('build/jacoco/unitTest.exec')
reports {
html.destination = 'build/reports/coverage'
}
}
这需要在运行单元测试的任务之后显式调用,例如:
gradle unitTest jacocoTestReport
这是否只包括那些
类目录
?对不起,那是很久以前的事了,我没有了解项目的最新状态。我最后在这里问了我自己的问题:。