From 6fafb9f3783af116a283a5fd950864a1cdcc1910 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Fri, 17 Jul 2015 07:54:28 -0700 Subject: Get code coverage for JUnit+Robolectric instead --- .travis.yml | 2 +- app/build.gradle | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index cb7a7aa..77d19fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,6 +36,6 @@ android: license: - '.+' -script: ./gradlew build check createDebugCoverageReport +script: ./gradlew build check jacocoTestDebugReport after_success: ./gradlew coveralls diff --git a/app/build.gradle b/app/build.gradle index 4fe9432..aade9af 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,7 +66,47 @@ android { } } -coveralls.jacocoReportPath = 'build/reports/coverage/debug/report.xml' +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: "jacocoTestDebugReport", type: JacocoReport, dependsOn: "testDebug") { + group = "Reporting" + description = "Generate Jacoco coverage reports" + + 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/testDebug.exec") + + reports { + xml.enabled = true + html.enabled = true + } +} + +coveralls.jacocoReportPath = 'app/build/reports/jacoco/jacocoTestDebugReport/jacocoTestDebugReport.xml' dependencies { testCompile 'junit:junit:4.12' -- cgit v1.2.3