Exclure les méthodes de la couverture de code avec Cobertura
Existe-t-il un moyen d'exclure le code de L'inclusion dans les rapports de couverture Cobertura? Nous avons certaines méthodes qui ne devraient pas être incluses dans le rapport de couverture et donc ne pas réduire les numéros de couverture.
Je sais que Clover a une telle fonctionnalité, mais je n'ai rien trouvé de similaire pour Cobertura.
4 réponses
Vous pouvez exclure des classes de l'instrumentation. Ensuite, ils ne devraient pas apparaître sur les rapports. Voir les instructions exclude ci-dessous.
Vous pouvez également ignorer les appels à certaines méthodes. Voir ignorer déclaration ci-dessous.
Si vous utilisez maven, consultez le manuel du plugin Maven .
<configuration>
<instrumentation>
<ignores>
<ignore>com.example.boringcode.*</ignore>
</ignores>
<excludes>
<exclude>com/example/dullcode/**/*.class</exclude>
<exclude>com/example/**/*Test.class</exclude>
</excludes>
</instrumentation>
</configuration>
Et pour ant voir ce.
<cobertura-instrument todir="${instrumented.dir}">
<ignore regex="org.apache.log4j.*" />
<fileset dir="${classes.dir}">
<include name="**/*.class" />
<exclude name="**/*Test.class" />
</fileset>
<fileset dir="${jars.dir}">
<include name="my-simple-plugin.jar" />
</fileset>
</cobertura-instrument>
Cela me casse la tête depuis un certain temps maintenant.
Mon problème était que j'avais le plugin cobertura maven configuré dans la section reporting au lieu de la section build.
Les paramètres d'instrumentation, et donc l'exclusion des classes ou des paquets, ne seront pas appliqués si vous ne le configurez pas sur la section de construction, alors faites attention à cela.
N'oubliez pas d'exclure les classes internes aussi.
<exclude>path/to/class/MyClass*.class</exclude>
Il m'a fallu des siècles pour remarquer qu'il me manquait un astérisque!
Cobertura ne fournit pas actuellement une telle fonctionnalité, et Emma non plus (que nous utilisons) bien qu'elle soit répertoriée comme une amélioration à venir-bien que sous la forme d'une extension des règles d'exclusion je crois plutôt que comme une annotation.
Serait pratique pour couvrir ces quelques coins inaccessibles proprement afin que vous puissiez viser 100% sans être ridicule.
Je pense que les annotations seraient probablement une façon plus conviviale de le faire, mais elles devraient être équitables explicitement nommé et basé sur une liste de scénarios acceptables car je crains que quelque chose comme '@ExcludeFromCoverage' ne soit ajouté généreusement.