Since the release of 'com.android.tools.build:gradle:1.1.0'
I'm moving most of my java test code from androidTest
to the test
folder because the JVM tests are a lot faster. But I cannot move all tests. I really need the device tests because of some ContentProvider
stuff.
I've had 100% code coverage before I started migrating. When I'm currently running the jacoco code coverage I get 40% for the androidTest
folder and 71% for the test
folder. My code is 100% tested but I have no report proofing this.
Is there a way to combine both reports? I found JacocoMerge but couldn't get it to work.
Here is the output of the androidTest
folder: build/outputs/reports/coverage/debug/index.html
And here the output of the test
folder build/reports/jacoco/generateJacocoTestReports/html/index.html
generated with this gradle task:
def coverageSourceDirs = [
'../library/src/main/java'
]
task generateJacocoTestReports(type: JacocoReport, dependsOn: "test") {
group = "Reporting"
description = 'Generate Jacoco Robolectric unit test coverage reports'
classDirectories = fileTree(
dir: '../library/build/intermediates/classes/debug',
excludes: ['**//*R.class',
'**//*R$*.class',
'***/*//*$ViewInjector*.*',
'**//*BuildConfig.*',
'**//*Manifest*.*']
)
sourceDirectories = files(coverageSourceDirs)
additionalSourceDirs = files(coverageSourceDirs)
executionData = files('../library/build/jacoco/testDebug.exec')
}
不确定你是否仍然需要这个,但我最近发布了Gradle插件,它可以帮助你: https : //github.com/paveldudka/JacocoEverywhere
There is also the gradle plugin https://github.com/palantir/gradle-jacoco-coverage that acording to docs can do the job, too.
I haven-t tried it for one submodul with two different test-parts but it works well for merging the testparts of to two submoduls.
See Gradle jacoco coverage report with more than one submodule(s)? for details
In case you use Jenkins with the JaCoCo plugin you can just configure all jacoco.exec and emma.ec files in "Path to exec files" to have a combined coverage reported.
connectedAndroidTest will result in emma.ec files somewhere in "outputs" by default.
JacocoMerge task can be used to merge 2 or more jacoco execution data.
Below task can be added to the root gradle file and on successful execution of this task, merged execution data can be found under root build directory. ( build/jacoco/mergeJacocoReport.exec )
evaluationDependsOnChildren()
//Missing this might be a problem in fetching JacocoReport tasks from sub-modules.
task mergeJacocoReport(type: org.gradle.testing.jacoco.tasks.JacocoMerge) {
group "Jacoco Report"
description "Merge Jacoco Code Coverage Report"
def executionFiles = fileTree("$rootProject.rootDir", {
includes = ['**/*.exec']
})
setExecutionData(executionFiles)
}
subprojects.each { $project ->
def tasks = $project.tasks.withType(JacocoReport)
if (tasks != null) {
mergeJacocoReport.dependsOn << tasks
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.