我使用下面的代码来排除片段,但我无法从jacoco代码覆盖中驱逐片段,请帮助我。
task jacocoTestReport(type: JacocoReport) {
def coverageSourceDirs = [
'src/main/java'
]
group = "Reporting"
description = "Generates Jacoco coverage reports"
reports {
xml {
enabled = true
destination "${buildDir}/reports/jacoco/jacoco.xml"
}
csv.enabled false
html {
enabled true
destination "${buildDir}/jacocoHtml"
}
}
classDirectories = fileTree(
dir: 'build/intermediates/classes/debug',
excludes: ['**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Fragment*.*'
]
)
sourceDirectories = files(coverageSourceDirs)
additionalSourceDirs = files(coverageSourceDirs)
executionData = files('build/outputs/code - coverage/connected/flavors/smartcompanion/coverage.ec')
}
我们使用以下命令: -
gradlew connectedCheck
gradlew connectedAndroidTest
gradlew connectedDubugAndroidTest
每次在报道报告中我们都能看到片段。
答案 0 :(得分:0)
还有另一种排除文件的方法,您可以将它们过滤掉:
classDirectories = fileTree(
dir: 'build/intermediates/classes/debug',
excludes: ['**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Fragment*.*'
]
).filter ({file -> !file.name.contains('Fragment')})
由于某种原因,我也无法排除碎片。我无法找出问题所在。但是按名称过滤掉它们是可行的。因此,这似乎是一种解决方法,但至少我可以继续进行并完成工作。
我还注意到,在Android上,不同版本的Gradle和jacoco插件并不总是很兼容。因此,尝试降级(或升级)也可能会有所帮助。