Zasięg kodu Jacoco Gradle - Następnie opublikuj / pokaż w Jenkins
Próbuję ustawić pokrycie kodu dla projektu aplikacji Java.
Nazwa projektu: NewApp
Struktura projektu:
src / java / ** (kod źródłowy)src / java-test (testy jednostkowe - Jnuit)test / it-test (test integracyjny)test / at-testy (testy akceptacyjne)tomcat / * (zawierają skrypty start / stop tomcat)foldery xx / .. etc, które są wymagane do zwykłej aplikacji.Wersja Gradle: 1.6
Środowisko: Linux
Mam działający skrypt budujący gradle, który pobiera zależności aplikacji (NewApp) (tj. Słoiki serwisowe używane przez aplikację do procesu budowania) z repozytorium artefaktów kompilacji (np. Artefakt / maven) i buduje aplikację.
W tym momencie chciałem uzyskać pokrycie kodu za pomocą wtyczki JaCoCo dla mojego projektu aplikacji NewApp.
Poszedłem za dokumentacją na Gradle / Jacoco, ale nie wydaje się tworzyć żadnych raportów / ... folderu dla jacoco itp., Gdzie mogę znaleźć to, co zrobił raport zasięgu Jacoco.
Moje pytania: 1. Aby uzyskać pokrycie kodu za pomocą testów jednostkowych (Junit), zakładam, że wszystko, co muszę zrobić, jest następujące i NIE będzie wymagać ode mnie uruchamiania / zatrzymywania tomcat przed uruchomieniem testu jednostkowego (zadanie testowe tj. „Test stopniowy” ) aby uzyskać pokrycie kodu dla / za pomocą testów jednostkowych. Proszę doradzić / poprawić. Kod (tylko dla części testowej jednostki Gradle jacoco) - używam:
apply plugin: 'jacoco'
test {
include 'src/java-test/**'
}
jacocoTestReport {
group = "reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled true
html.enabled true
csv.enabled false
}
//classDirectories = fileTree(dir: 'build/classes/main', include: 'com/thc/**')
//sourceDirectories = fileTree(dir: 'scr/java', include: 'com/thc/**')
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
i do testów integracyjnych:
task integrationTest(type: Test) {
include 'test/java/**'
}
Ponieważ jacocoTestReport zależy od zadań testowych, będą one najpierw wywoływane, a następnie jacocoTestReport zgłosi to, co znalazło dla pokrycia kodu.
Aby uzyskać pokrycie kodu dla testów integracyjnych, zakładam, że najpierw muszę uruchomić tomcat (tj. Przed uruchomieniem / wywołaniem celu testowego dla testów integracyjnych), a następnie wywołać zadanie „gradle integrationTest” lub „test stopniowania”, a następnie zatrzymać tomcat - aby uzyskać kod raport pokrycia. Z innych postów na blogu dowiedziałem się również, że należy ustawić zmienną JAVA_OPTS, aby przypisać agenta jacoco przed uruchomieniem tomcat.na przykład: ustawienie zmiennej JAVA_OPTS jak:
export JACOCO="-Xms256m -Xmx512m -XX:MaxPermSize=1024m -javaagent:/production/jenkinsAKS/jobs/NewApp/workspace/jacoco-0.6.3.201306030806/lib/jacocoagent.jar=destfile=/production/jenkinsAKS/jobs/NewApp/workspace/jacoco/jacoco.exec,append=true,includes=*"
export JAVA_OPTS="$JAVA_OPTS $JACOCO"
Bycie nowym w Gradle / groovy - nie jestem pewien, jaki kod powinienem napisać w build.gradle (skrypt kompilacji), aby uzyskać powyższe testy Integracji / Jednostki, jeśli wymaga to start / stop tomcat. Jeśli ktoś może dostarczyć przykładowy skrypt do tego, spróbuję.
Nie mam teraz żadnego pokrycia kodu, kiedy publikuję pokrycie kodu Jacoco w Jenkins (używając akcji post build Jenkinsa do publikowania raportów Jacoco). Tablica rozdzielcza Jenkins pokazuje 0% dla pokrycia kodu (tj. Paski pokazujące cały czerwony kolor, bez zielonego dla rzeczywistego pokrycia kodu).
Potrzebujesz porady, aby uzyskać trochę trakcji.