Skip to main content

Code Coverage sur Java avec Sonar

Installer Jacoco

Dans votre fichier build.gradle :

plugins {
....
id 'jacoco'
id "org.sonarqube" version "4.3.1.3277"
}

Aprés plugins il faut spécifier la version de jacoco :

jacoco {
toolVersion = "0.8.7"
}

Spécifier à jacoco de générer le rapport du test coverage en XML et HTML

jacocoTestReport {
reports {
xml.required = true
html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
}
}

Toujours au premier niveau d'indentation (pas d'indentation) il faut remettre les mêmes paramètres d'authentification Sonar dans le Gradle pour que les tâches Gradle puissent se connecter au SonarQube

sonar {
properties {
property "sonar.projectKey", "Demo"
property "sonar.host.url", "http://localhost:9000"
property "sonar.token", "sqp_c45c454825fb09a8b904e59e77e182b917cb3d6c"
}
}

Ajouter test jacoco dans test gradle

Dans tasks.named('test'):

finalizedBy jacocoTestReport

Donc ça ressemble à :

tasks.named('test') {
useJUnitPlatform()
finalizedBy jacocoTestReport
}

Cela permet de dire à gradle test d'effectuer les tests suivants :

  • Tests unitaires JUnit
  • Tests jacoco (code coverage)

sonar-project.properties

  • On dit à Sonar que le code coverage est fait par jacoco
  • On scan e ncode coverage uniquement les services
sonar.java.coveragePlugin=jacoco
sonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/jacocoTestReport.xml
sonar.inclusions=**/*Service.java

Exécuter le code coverage Jacoco en CMD nativement

A exécuter à la racine du projet projet en CMD

gradlew.bat build jacocoTestReport sonar
Note

Je conseil d'utiliser la ligne de commande native