Je reçois la mesure de pourcentage de couverture de test unitaire de l'API sonar de repos.
Comment puis-je échouer la construction si elle tombe en dessous d'une valeur définie?
JaCoCo
offre cette fonctionnalité.
Définissez le plug-in JaCoCo à l'aide des règles de configuration COVEREDRATIO
pourLINE
et BRANCH
:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.7.201606060606</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
<configuration><rules><rule>
<element>CLASS</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.80</minimum>
</limit>
<limit>
<counter>BRANCH</counter>
<value>COVEREDRATIO</value>
<minimum>0.80</minimum>
</limit>
</limits>
<excludes>
<exclude>com.xyz.ClassToExclude</exclude>
</excludes>
</rule></rules></configuration>
</execution>
</executions>
</plugin>
Les options counter
prises en charge sont les suivantes:
Je pense que INSTRUCTION
vous permettrait de faire une vérification générale (vérifiez que le projet dans son ensemble a au moins 0,80 de couverture, par exemple).
Exemple avec INSTRUCTION - couverture globale des instructions de 80%
Cet exemple nécessite une couverture d’instruction globale de 80% et aucun cours ne doit être omis:
<rules> <rule implementation="org.jacoco.maven.RuleConfiguration"> <element>BUNDLE</element> <limits> <limit implementation="org.jacoco.report.check.Limit"> <counter>INSTRUCTION</counter> <value>COVEREDRATIO</value> <minimum>0.80</minimum> </limit> <limit implementation="org.jacoco.report.check.Limit"> <counter>CLASS</counter> <value>MISSEDCOUNT</value> <maximum>0</maximum> </limit> </limits> </rule> </rules>
Si la couverture ne correspond pas à vos attentes, le message suivant échoue:
[WARNING] Rule violated for class com.sampleapp.SpringConfiguration: lines covered ratio is 0.00, but expected minimum is 0.80
[WARNING] Rule violated for class com.sampleapp.Launcher: lines covered ratio is 0.33, but expected minimum is 0.80
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
Dans l'exemple ci-dessus, j'ai défini <exclude>com.xyz.ClassToExclude</exclude>
. Je pense que vous constaterez que vous devez ajouter de nombreuses exclusions. Les projets contiennent généralement de nombreuses classes non testables (Spring Configuration, beans Java, etc.). Vous pourrez peut-être aussi utiliser une expression régulière.
Specify the datFile location if it is not under default folder.
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<dataFile><path-to-jacoc-ut.exec></dataFile>
<rules><rule>
<element>CLASS</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.80</minimum>
</limit>
<limit>
<counter>BRANCH</counter>
<value>COVEREDRATIO</value>
<minimum>0.80</minimum>
</limit>
</limits>
<excludes>
<exclude>com.xyz.ClassToExclude</exclude>
</excludes>
</rule></rules></configuration>
</execution>