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.

questionAnswers(2)

yourAnswerToTheQuestion