Android 如何从Jacoco代码覆盖范围中排除片段
我使用了下面的代码来排除片段,但我无法从jacoco代码覆盖范围中排除片段,请帮助我Android 如何从Jacoco代码覆盖范围中排除片段,android,code-coverage,jacoco,Android,Code Coverage,Jacoco,我使用了下面的代码来排除片段,但我无法从jacoco代码覆盖范围中排除片段,请帮助我 task jacocoTestReport(type: JacocoReport) { def coverageSourceDirs = [ 'src/main/java' ] group = "Reporting" description = "Generates Jacoco coverage reports" reports { xml { enabled =
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
每次在覆盖率报告中,我们都可以看到片段。还有另一种排除文件的方法,您可以将其过滤掉:
classDirectories = fileTree(
dir: 'build/intermediates/classes/debug',
excludes: ['**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Fragment*.*'
]
).filter ({file -> !file.name.contains('Fragment')})
由于某种原因,我也无法排除片段。我找不出哪里出了问题。不过,按名字过滤它们还是有效的。所以这感觉像是一个解决办法,但至少我可以继续前进,完成我的工作
我还注意到,在Android上,Gradle和jacoco插件的不同版本并不总是非常兼容。因此,尝试降级(或升级)也可能会有所帮助 你解决过这个问题吗?我也有同样的问题