Gradle jacoco de couverture de code - Ensuite publier/afficher dans Jenkins

Je suis en train de l'installation de la couverture de code pour un projet d'application Java.

Nom du projet : NewApp

Structure de projet:

  • src/java/** (code source)
  • src/java-test (tests unitaires - Jnuit)
  • test/il-test (test d'intégration)
  • test/au-tests (tests d'acceptation)
  • tomcat/* (contient tomcat start/stop scripts)
  • xx/.. etc dossiers qui sont nécessaires pour une application.

Gradle version : 1.6

Environnement : Linux

J'ai l'exécution d'un script de build gradle qui récupère application (NewApp) dépendances (à savoir le service des pots utilisés par l'application pour le processus de construction) d'un artefact référentiel (artifactory/maven par ex), et la création de l'application.

Maintenant à ce point, je voulais me la couverture de code à l'aide de JaCoCo plugin pour mon NewApp projet d'application.

J'ai suivi la documentation par Gradle/Jacoco mais il ne semble pas à créer des rapports/... dossier pour jacoco etc où je peux trouver ce Jacoco rapport de couverture de fait.

Mes questions:
1. Pour obtenir la couverture de code à l'aide de tests Unitaires (Junit), j'assume tout ce que j'ai à faire est le suivant et il ne sera PAS besoin de moi pour démarrer/arrêter le serveur tomcat avant l'exécution de l'unité de test (test de la tâche, c'est à dire "gradle test") pour obtenir la couverture de code pour/par l'aide de tests unitaires. Merci de vous conseiller et de les corriger. Le code (juste pour Gradle jacoco de test de l'unité de la partie) - j'utilise est:

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)
}

et pour les tests d'Intégration:

task integrationTest(type: Test) {
        include 'test/java/**'
}

Comme jacocoTestReport est dépend de la tâche de test(s), donc, ils vont être appelée en premier et puis finalement jacocoTestReport va rapporter ce qu'il a trouvé pour la couverture de code.

  1. Pour l'obtention de la couverture de code par les tests d'intégration, je suppose que je dois démarrer tomcat première (c'est à dire avant l'exécution /l'appel de la cible de test pour les tests d'intégration), puis d'appeler "gradle integrationTest" ou "gradle test" de la tâche, puis arrêter tomcat -- pour obtenir le rapport de couverture de code. D'autres billets de blog, je trouve aussi que l'on doit l'installation de la variable JAVA_OPTS à attribuer jacoco agent avant de tomcat commence.

ex: réglage de la variable JAVA_OPTS comme:

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"
  1. Étant nouveau Gradle/groovy - je ne sais pas quel code dois-je écrire dans un délai de construire.gradle (script) pour obtenir au-dessus de l'Intégration/tests Unitaires de travail si elle implique le démarrage/arrêt de tomcat. Si quelqu'un peut fournir un exemple de script pour le faire, je vais essayer.

  2. Je ne suis pas toute la couverture de code à droite maintenant, lorsque je publie Jacoco de couverture de code dans Jenkins (à l'aide de Jenkins post-construction de l'action pour la publication Jacoco rapports). Jenkins construire tableau de bord indique 0% de couverture de code (c'est à dire les barres montrant tous de couleur rouge, ni vert pour réelle de la couverture de code).

Besoin de vos conseils pour avoir une certaine influence sur ce point.

InformationsquelleAutor Arun Sangal | 2013-08-07