2015-02-06 10 views
5

Dzisiaj uczę się TeamCity Integration Server i staram się włączyć Raporty Jococo z moją aplikacją Android Gradle.Plik danych Jacoco nieczytelny dla Androida na TeamCity

This dokument pokazuje mi, jak włączyć zasięg Jococo, z następującym ostrzeżeniem:

Upewnij się, że testy wykonywane w trybie wideł = true. W przeciwnym razie dane dotyczące zasięgu mogą nie zostać zebrane prawidłowo.

Nie wiem, co powinienem zrobić, aby "uruchomić moje testy w trybie fork = true". TeamCity generujące raporty isnt zasięg i ostrzega mnie z następującą dzienniku:

ścieżkę Jacoco pliku danych określony jako C: \ TeamCity \ buildAgent \ temp \ buildTmp \ JACOCO5884661263301729570coverage \ jacoco.exec ale nie jest czytelny. Pokrycie nie zostanie odebrane.

myślę, że to ostrzeżenie jest związane nie uruchamiając test w widelcem = true trybu.

Więc moje pytanie brzmi:

  1. Co widelec = true oznacza tryb i
  2. Jak włączyć go w Gradle?

Dzięki!

+0

Zmieniliśmy mylących 'widelec = true' oświadczenie. Dzięki za wskazanie. –

Odpowiedz

6

Po kilku badań, byłem w stanie polecić TeamCity do przetwarzania raportów pokrycia generowanych przez jacoco używając „usługi komunikat” technika, wyjaśnił na this:

Od TeamCity 9.0, TeamCity jest w stanie analizować JaCoCo dane dotyczące zasięgu i wygenerować raport za pomocą wiadomości sieciowej w następującym formacie:

##teamcity[jacocoReport dataPath='<path to jacoco.exec file>']

Więc zmodyfikowane mój plik build.gradle dodanie linii folowing do jacocoTestReport odcinku:

if (project.hasProperty("teamcity")) { 
    println '##teamcity[jacocoReport dataPath=\'app/build/jacoco/testDebug.exec\' includes=\'com.mynamespace.myproject.*\' excludes=\'**/R.class **/R$*.class **/*$ViewInjector*.* **/BuildConfig.* **/Manifest*.*\']' 
} 

Po tym, complere jacocoTestReport było:

task jacocoTestReport(type: JacocoReport, dependsOn: "testDebug") { 
    group = "Reporting" 

    description = "Generate Jacoco coverage reports" 

    classDirectories = fileTree(
      dir: '../app/build/intermediates/classes/debug', 
      excludes: ['**/R.class', 
         '**/R$*.class', 
         '**/*$ViewInjector*.*', 
         '**/BuildConfig.*', 
         '**/Manifest*.*'] 
    ) 

    additionalSourceDirs = files(coverageSourceDirs) 
    sourceDirectories = files(coverageSourceDirs) 

    executionData = files('../app/build/jacoco/testDebug.exec') 
    if (project.hasProperty("teamcity")) { 
     println '##teamcity[jacocoReport dataPath=\'app/build/jacoco/testDebug.exec\' includes=\'com.mynamespace.myproject.*\' excludes=\'**/R.class **/R$*.class **/*$ViewInjector*.* **/BuildConfig.* **/Manifest*.*\']' 
    } 

    reports { 
     xml.enabled = true 
     html.enabled = true 
    } 

} 

A TeamCity zaczęli zgłaszać test pokrycia belows:

enter image description here

0

Być może warto rozważyć użycie Gradle jacoco plugin. Ma to dodatkową zaletę, polegającą na usunięciu zależności od infrastruktury CI, co pozwala na uruchamianie raportów pokrycia na komputerach deweloperów.

+0

Właściwie już używam wtyczki jacoco z Gradle i jestem w stanie uruchomić test zasięgu na komputerach programistów.Ale chciałbym uruchomić na serwerze CI, aby móc odrzucić kompilację, jeśli kwota "testowanego kodu" spadnie. – regisxp

Powiązane problemy