2015-03-09 6 views
9

Seit der Veröffentlichung von 'com.android.tools.build:gradle:1.1.0' Ich verschiebe die meisten meiner Java-Test-Code von androidTest Ordner test, weil die JVM-Tests sind viel schneller. Aber ich kann nicht alle Tests verschieben. Ich brauche wirklich die Gerätetests wegen etwas ContentProvider Zeug.Kombinieren Sie jacoco Abdeckung von androidTest und Test

Ich hatte 100% Code-Abdeckung, bevor ich mit der Migration begann. Wenn ich gerade die jacoco-Code-Abdeckung verwende, erhalte ich 40% für den Ordner androidTest und 71% für den Ordner test. Mein Code ist zu 100% getestet, aber ich habe keinen Bericht, der dies beweist.

Gibt es eine Möglichkeit, beide Berichte zu kombinieren? Ich fand JacocoMerge aber konnte es nicht zur Arbeit bringen. Hier

ist der Ausgang des androidTest Ordner: build/outputs/reports/coverage/debug/index.html

Und hier der Ausgang des test Ordner build/reports/jacoco/generateJacocoTestReports/html/index.html mit diesem gradle Aufgabe generiert:

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') 
} 
+0

Wenn Sie eine Lösung gefunden habe ich irgendwelche Hinweise schätzen würden Sie anbieten können. Vielen Dank. – Kevin

Antwort

0

Im Fall, dass Sie Jenkins mit dem JaCoCo plugin Sie können alle jacoco.exe- und emma.ec-Dateien in "Pfad zu exec-Dateien" konfigurieren, um eine kombinierte Berichterstattung zu erhalten.

connectedAndroidTest wird standardmäßig emma.ec-Dateien irgendwo in "outputs" ergeben.

6

Nicht sicher, ob Sie brauchen immer noch, aber ich vor kurzem Gradle Plugin veröffentlicht, die Ihnen dabei helfen könnten: https://github.com/paveldudka/JacocoEverywhere

+0

Wirklich hilfreich Plugin –

+0

Danke, Pavel, funktioniert gut für mich! – gregko

0

JacocoMerge Aufgabe verwendet werden kann 2 oder mehr jacoco Ausführungsdaten zu verschmelzen.

Die untere Task kann zur Root-Gradle-Datei hinzugefügt werden und bei erfolgreicher Ausführung dieser Task befinden sich die zusammengefassten Ausführungsdaten im Root-Build-Verzeichnis. (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 
    } 
}