Skip to content

Instantly share code, notes, and snippets.

@wasabeef
Created November 7, 2018 23:38
Show Gist options
  • Save wasabeef/9ac8075d8c4b07f688348f243b0c3df8 to your computer and use it in GitHub Desktop.
Save wasabeef/9ac8075d8c4b07f688348f243b0c3df8 to your computer and use it in GitHub Desktop.
apply plugin: "jacoco"
jacoco {
toolVersion = JACOCO_VERSION
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
}
android.applicationVariants.all { variant ->
def variantName = variant.name.capitalize()
def autoGenerated = ['**/R.class',
'**/R$*.class',
'**/Manifest*.*',
'android/**/*.*',
'**/BuildConfig.*',
'**/*$ViewBinder*.*',
'**/*$ViewInjector*.*',
// Dagger
'**/*_MembersInjector.class',
'**/Dagger*Component.class',
'**/Dagger*Component$Builder.class',
'**/*Module_*Factory.class',
'**/*_Factory.class']
/**
* Generates Jacoco coverage reports based off the unit tests.*/
task("jacoco${variantName}Report", type: JacocoReport, dependsOn: "test${variantName}UnitTest") {
group "Reporting"
description "Generate ${variantName} Jacoco coverage reports."
reports {
xml.enabled = true
html.enabled = true
}
// variant.javaCompile.source does not work
// traverses from starting point
sourceDirectories = files(android.sourceSets.main.java.srcDirs)
additionalSourceDirs = files(android.sourceSets.main.java.srcDirs)
executionData = files("${buildDir}/jacoco/test${variantName}UnitTest.exec")
classDirectories = files(
[fileTree(dir: "${buildDir}/intermediates/classes/${variantName}",
excludes: autoGenerated)],
[fileTree(dir: "${buildDir}/tmp/kotlin-classes/${variantName}",
excludes: autoGenerated)],
[fileTree(dir: "${buildDir}/tmp/kotlin-classes/${variantName}UnitTest",
excludes: autoGenerated)])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment