apply plugin: 'jacoco' // By default, Android Gradle plugin uses JaCoCo version 0.7.1, which works great in JUnit on the JVM. // But that will fail on Android Lollipop/ART runtime, which requires 0.7.3 or higher. if (rootProject.hasProperty('jacocoVersion')) { android.jacoco.version = rootProject.property('jacocoVersion') jacoco.toolVersion = rootProject.property('jacocoVersion') } else { println "Using the default JaCoCo version of: ${jacoco.toolVersion}" } // The built-in jacoco plugin automatically applies itself to all Test tasks tasks.withType(Test).whenTaskAdded { it.jacoco.append = false it.jacoco.classDumpFile = file("${project.buildDir}/jacoco/dump") } // These tasks are for generating the coverage report after JUnit+robolectric tests have executed tasks.create(name: "jacocoUnitTestDebugReport", type: JacocoReport, dependsOn: "testDebugUnitTest") { group = "Reporting" description = "Generate Jacoco coverage reports for unit tests" classDirectories = fileTree( dir: "${project.buildDir}/intermediates/classes/debug/", excludes: ['**/R.class', '**/R$*.class', '**/*$ViewInjector*.*', '**/BuildConfig.*', '**/Manifest*.*'] ) sourceDirectories = files("src/main/java", "src/debug/java") executionData = files("${project.buildDir}/jacoco/testDebugUnitTest.exec") reports { xml.enabled = true html.enabled = true } } coveralls.jacocoReportPath = "${project.buildDir}/reports/jacoco/jacocoUnitTestDebugReport/jacocoUnitTestDebugReport.xml"