[英]How to exclude Fragment from Jacoco code coverage
我已经使用下面的代码来排除片段,但我无法从 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
每次在覆盖率报告中我们都能看到片段。
还有另一种排除文件的方法,您可以将它们过滤掉:
classDirectories = fileTree(
dir: 'build/intermediates/classes/debug',
excludes: ['**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Fragment*.*'
]
).filter ({file -> !file.name.contains('Fragment')})
出于某种原因,我也无法排除片段。 我不知道出了什么问题。 不过按名称过滤它们是有效的。 所以这有点像一种解决方法,但至少我可以继续前进并完成我的工作。
我还注意到在 Android 上,不同版本的 Gradle 和 jacoco 插件并不总是非常兼容。 因此,尝试降级(或升级)也可能会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.