web-dev-qa-db-fra.com

Comment exclure des classes du calcul de couverture dans EclEmma sans les exclure réellement de la couverture elle-même

J'utilise EclEmma pour tester la couverture de mes tests de scénarios et utiliser des tests de cas sur mon projet. J'ai un package de base qui contient les classes les plus générales et les tests de cas d'utilisation. La couverture ressemble à ceci:

Code coverage in our project

Ce que je veux, c'est exclure les tests de cas d'utilisation (par exemple BugReportTest) du calcul de la couverture. Mais je veux que les tests à l'intérieur soient pris en compte. Je sais comment exclure toute la classe de la couverture, mais si je le fais, mon% de couverture baisse car les tests réels qui vérifient quelles lignes de mon code sont testées sont oubliés. Ces tests de cas d'utilisation doivent rester dans le package de base pour des raisons de confidentialité.

11
Programmer1994

Pour des raisons techniques, il peut être nécessaire d'exclure certaines classes de l'analyse de couverture de code. Les options suivantes configurent l'agent de couverture pour exclure certaines classes de l'analyse. À l'exception de l'optimisation des performances ou des cas techniques, ces options ne sont normalement pas nécessaires.

  1. Exclut: Une liste de noms de classe qui doivent être exclus de l'analyse d'exécution. Les entrées de la liste sont séparées par une colon (:) et peuvent utiliser wildcard characters (* and ?). (Default: empty)

  2. Exclure les chargeurs de classe: Une liste de noms de chargeurs de classe qui doivent être exclus de l'analyse d'exécution. Les entrées de la liste sont séparées par une colon (:) et peuvent utiliser wildcard characters (* and ?). Cette option peut être requise en cas de frameworks spéciaux qui entrent en conflit avec l'instrumentation de code JaCoCo, en particulier les chargeurs de classe qui n'ont pas accès aux classes d'exécution Java Java. (Default: Sun.reflect.DelegatingClassLoader)

Avertissement: utilisez ces options avec prudence! Des entrées non valides peuvent casser le lanceur de couverture de code. N'utilisez pas non plus ces options pour définir la portée de votre analyse. Les classes exclues s'afficheront toujours comme non couvertes.

Lien de ressource:

  1. Préférences de couverture du code EclEmma

Les exemples suivants spécifient tous le même ensemble de modèles d'inclusion/exclusion:

  1. <filter includes="com.foo.*" excludes="com.foo.test.*, com.foo.*Test*" />
  2. <filter includes="com.foo.*" /> <filter excludes="com.foo.test.*, com.foo.*Test*" />
  3. <filter value="+com.foo.*, -com.foo.test.*, -com.foo.*Test*" />
    <filter excludes="com.foo.*Test*" file="myfilters.txt" />
    où le fichier myfilters.txt contient ces lignes:

    -com.foo.test.* +com.foo.*

Lien de ressource:

  1. Filtres de couverture
  2. Je suis certain que toutes mes classes sont construites avec -g (debug = 'true') et pourtant EMMA se plaint toujours de manquer des informations de débogage!

Ignorer la couverture du code pour les tests unitaires dans EclEmma

Preferences->Java->Code Coverage et définissez le "Only path entries matching" option pour src/main/Java - semble bien fonctionner

11
SkyWalker