2013-06-04 8 views
11

Mam strukturę projektu, która wygląda jak poniżej. Chcę użyć funkcji TestReport w Gradle, aby zebrać wszystkie wyniki testu do jednego katalogu. Następnie mogę uzyskać dostęp do wszystkich wyników testu za pomocą jednego pliku index.html dla WSZYSTKICH podprojektów. Jak mogę to zrobić?agregowanie wyników gradacji wielu rzutów przy użyciu TestReport

. 
|--ProjectA 
    |--src/test/... 
    |--build 
    |--reports 
     |--tests 
     |--index.html (testresults) 
     |--.. 
     |--.. 
|--ProjectB 
    |--src/test/... 
     |--build 
     |--reports 
      |--tests 
      |--index.html (testresults) 
      |--.. 
      |--.. 

Odpowiedz

21

Od Example 23.13. Creating a unit test report for subprojects w Gradle User Guide:

subprojects { 
    apply plugin: 'java' 

    // Disable the test report for the individual test task 
    test { 
     reports.html.enabled = false 
    } 
} 

task testReport(type: TestReport) { 
    destinationDir = file("$buildDir/reports/allTests") 
    // Include the results from the `test` task in all subprojects 
    reportOn subprojects*.test 
} 

próbka pełni funkcjonalny jest dostępny od samples/testing/testReport w pełnym rozkładzie Gradle.

+0

Hey Pete, muszę jakiś kierunek. W moim przypadku mam tylko jeden projekt, tj. ProjectA i po stopniowaniu clean build integrationTest, widzę build/jacoco/test.exec i build/jacoco/integrationTest.exec. Pod budową/raportami/testami/xxxxxx widzę albo index.html dla testów jednostkowych, albo tylko testy integracyjne, tzn. Jeśli uruchomię gradację czystych kompilacji, widzę testy jednostkowe index.html i jeśli uruchomię gradle clean test integracji testTest, to nadpisuje dane w build/reports/tests/xxx i pobiera nowe dane do zadania integrationTest w tym samym folderze (build/reports/tests). –

+0

Podobnie, gdy uruchamiam sonar-runner, widzę oba pliki .exec zbierane podczas JacocoSensor i widzę również ogólny plik jacok ca.exec, tworzony w obszarze roboczym w folderze .sonar oraz w folderze build/reports/jacoco. sonar-runner kończy się pomyślnie, ale nie widzę wyników w desce rozdzielczej projektu w sonarze, mimo że mam oba widżety ustawione do pokazywania testów jednostkowych/pokrycia i testów integracji. Proszę poinformować, czego może mi brakować. –

+0

Należy ustawić oddzielny katalog raportu dla testów integracji (zobacz [Gradle Build Language Reference] (http://gradle.org/docs/current/dsl/index.html)). Nie jestem pewien problemu z Sonarem. –

1

Dla „connectedAndroidTest tam jest to podejście opublikowane przez google. (https://developer.android.com/studio/test/command-line.html#RunTestsDevice (Wielu moduł zgłasza sekcję))

  1. Dodaj 'android' raportowania wtyczki do projektów build.gradle.

    apply plugin: 'android-reporting'

  2. Wykonaj android testy z argumentem dodatkowym "mergeAndroidReports. Połączy wszystkie wyniki testów modułów projektu w jeden raport.

    ./gradlew connectedAndroidTest mergeAndroidReports

+0

Chociaż doktor mówi, że może również łączyć testy jednostkowe, wykonanie tego zadania zależy od testów espresso, które nie są czymś, na co liczyłem. – tasomaniac