-
Notifications
You must be signed in to change notification settings - Fork 9
Coverage
M.-Leander Reimer edited this page Aug 6, 2015
·
1 revision
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() })
}
}
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 }
}
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