2015-03-09 18 views
9

Po wydaniu 'com.android.tools.build:gradle:1.1.0' przenoszę większość mojego kodu testu java z androidTest do folderu test, ponieważ testy JVM są dużo szybsze. Ale nie mogę przenieść wszystkich testów. Naprawdę potrzebuję testów urządzenia ze względu na pewne rzeczy.Połączyć pokrycie jacoco z androidTest i przetestować

Posiadałem 100% zasięgu kodu przed rozpoczęciem migracji. Kiedy aktualnie używam zasięgu kodu jacoco, otrzymuję 40% dla folderu androidTest i 71% dla folderu test. Mój kod jest w 100% przetestowany, ale nie mam na to żadnego raportu.

Czy istnieje sposób łączenia obu raportów? Znalazłem JacocoMerge, ale nie mogłem go uruchomić.

Oto wyjściowy folderze androidTest: build/outputs/reports/coverage/debug/index.html

I tu wyjście folderze build/reports/jacoco/generateJacocoTestReports/html/index.html generowanego z tej Gradle zadania test:

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

Jeżeli znaleźli rozwiązanie tego bym wdzięczny za wszelkie wskazówki można dostarczyć. Dzięki. – Kevin

Odpowiedz

0

W przypadku korzystania Jenkins z JaCoCo wtyczkę możesz po prostu skonfigurować wszystkie pliki jacoco.exec i emma.ec w "Ścieżce do plików exec", aby mieć raport o połączonym zasięgu.

Funkcja connectedAndroidTest spowoduje, że pliki emma.ec będą domyślnie znajdować się w "wyjściach".

0

JacocoMerge zadanie może być wykorzystywane do łączenia 2 lub więcej danych wykonanie jacoco.

Poniższe zadanie można dodać do pliku grad root i po pomyślnym wykonaniu tego zadania, scalone dane wykonania można znaleźć w katalogu głównym kompilacji. (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 
    } 
}