Skip to content

Coverage

M.-Leander Reimer edited this page Aug 6, 2015 · 1 revision

JaCoCo

We are using JaCoCo to measure the coverage of our unit tests. The coverage is enabled for all modules of the Gradle build. The coverage report will be generated as HTML and XML for each subproject. The build also generates an aggregate JaCoCo report for all the plugin subprojects:

apply plugin: 'jacoco'

jacoco {
    toolVersion = '0.7.2.201409121644'
}

task jacocoRootReport(type: JacocoReport, group: 'Coverage') {
    description = 'Generates aggregate Jacoco coverage report from all subprojects'
    dependsOn(subprojects.test)

    additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
    sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
    classDirectories = files(subprojects.sourceSets.main.output)
    executionData = files(subprojects.jacocoTestReport.executionData)

    reports {
        html.enabled = true
        xml.enabled = true
    }

    doFirst {
        executionData = files(executionData.findAll { it.exists() })
    }
}

Coveralls

We are using Coveralls as online coverage service. To integrate Coveralls with the Gradle build we using the coveralls Gradle plugin. The integration was definitely pretty straight forward:

plugins {
    id 'com.github.kt3k.coveralls' version '2.4.0'
}

coveralls {
    sourceDirs = subprojects.sourceSets.main.allSource.srcDirs.flatten()
    jacocoReportPath = "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml"
}

def isCI = System.env.'CI' == 'true'
tasks.coveralls {
    group = 'Coverage'
    description = 'Upload aggregate Jacoco coverage report to Coveralls'

    dependsOn jacocoRootReport
    onlyIf { isCI }
}

Travis CI

After every successful build we publish the coverage data automatically. The .travis.yml file contains the following configuration:

env:
  - TERM=dumb

script: ./gradlew clean build jacocoTestReport

after_success: ./gradlew jacocoRootReport coveralls
Clone this wiki locally