apply plugin: "jacoco" jacoco { toolVersion "0.8.1" reportsDir = file("$buildDir/reports") } tasks.withType(Test) { jacoco.includeNoLocationClasses = true } // run ./gradlew clean createDebugCoverageReport jacocoTestReport task jacocoTestReport(type: JacocoReport) { group = "Reporting" description = "Generate Jacoco coverage reports" reports { xml.enabled = true html.enabled = true } def excludes = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*Module.*', '**/*Dagger*.*', '**/*MembersInjector*.*', '**/*_Provide*Factory*.*', '**/*_Factory.*', '**/*$*$*.*' ] // generated classes classDirectories = fileTree( // Java generated classes on Android project (debug build) dir: "$buildDir/intermediates/classes/debug", excludes: excludes ) + fileTree( // Kotlin generated classes on Android project (debug build) dir: "$buildDir/tmp/kotlin-classes/debug", excludes: excludes ) sourceDirectories = files("$project.projectDir/src/main/java") executionData = fileTree( dir: project.projectDir, includes: ["**/*.exec", "**/*.ec"] ) }