我正在使用Jacoco 0.8.5和Gradle 6.4,我有一个Android项目,我正在尝试设置我的代码覆盖率。这是我的jacoco.gradle文件:
apply plugin: 'jacoco'
def flavor = "debug"
def unitTestTask = "testDebugUnitTest"
jacoco {
toolVersion = "0.8.5"
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
}
final androidExcludes =
["**/R.class",
"**/R\$*.class",
"**/BuildConfig.*",
"**/Manifest*.*",
"**/*Test*.*",
"android/**/*.*",
"**/*_MembersInjector.class",
"**/Dagger*Component.class",
"**/Dagger*Component\$Builder.class",
"**/*Module_*Factory.class",
"**/*_Provide*Factory*.*",
"**/*_Factory*.*",
"**/*Activity*.*",
"**/*Fragment*.*",
"**/*ViewHolder*.*",
"**/*Adapter*.*"]
task jacocoReport(type: JacocoReport, dependsOn: "${unitTestTask}") {
reports {
xml.enabled = true
html.enabled = true
}
afterEvaluate {
def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/${flavor}/classes",
excludes: androidExcludes)
def kotlinDebugTree = fileTree(dir: "$project.buildDir/tmp/kotlin-classes/${flavor}/",
excludes: androidExcludes)
def mainSrc = "$project.projectDir/src/main/java"
sourceDirectories.setFrom(files([mainSrc]))
classDirectories.setFrom(files([debugTree], [kotlinDebugTree]))
executionData.setFrom(fileTree(dir: project.buildDir, includes: ["jacoco/${unitTestTask}.exec"]))
}
}
我希望从覆盖范围中删除一些文件,例如Activities或Adapter,这些文件已经设置在androidExcludes中。但是目前报告没有考虑我的排除项,正如您可以从CodeCov的以下报告中看到的那样,我仍然有被排除的文件(ViewHolder或Adapter)。
codecov.yml
配置也无法正常工作;否则 CodeCov GitHub 应用程序从哪里获取配置呢? - Martin Zeitler