web-dev-qa-db-fra.com

Comment puis-je exclure des types et des méthodes de la couverture de dotCover dans TeamCity?

J'ai un projet C # 4 existant pour lequel j'ai vérifié la couverture de test en utilisant TestDriven.Net et la fonctionnalité de couverture de Visual Studio, c'est-à-dire Test With -> Coverage dans le menu contextuel.

Le projet contient du code que je ne veux pas couvrir, et j'ai résolu ce problème en ajoutant le [ExcludeFromCodeCoverage] pour ces types et méthodes.

Nous venons de mettre à niveau TeamCity vers la version 6.0.3 et nous avons ajouté une couverture dotCover à l'étape de génération NUnit.

J'ai réussi à supprimer la couverture des assemblys externes tels que NHibernate dans la section "Filtres" (en indiquant explicitement les assemblys pour lesquels je souhaite une couverture), mais je ne parviens pas à exclure les types et les méthodes des assemblys couverts.

enter image description here

55
Martin R-L

Ok, Martin, je l'ai compris! Il n'a fallu qu'une heure pour analyser la syntaxe du filtre de manière aléatoire ... lorsque la documentation indique d'ajouter un filtre comme celui-ci

+:myassembly=*;type=*;method=***

Ils signifient vraiment ceci ... où tout dans <> est entièrement remplacé par vous et tout le reste est littéral

+:<myassembly>;type=<filter>;method=<filter>

Donc, le filtre que je voulais était d'inclure une seule assemblée (d'un groupe d'assemblys) et d'exclure ensuite quelques espaces de noms dans cette assemblée. J'ai écrit

+:Omnyx.Scanner
-:Omnyx.Scanner;type=Omnyx.Scanner.Simulation.*
-:Omnyx.Scanner;type=Omnyx.Scanner.ToolsCommon.*
62
Anthony Mastrean

Jetez un coup d’œil à la page Conseils/astuces dotCover . Il semble que vous puissiez configurer des exclusions dans la section Filtres, de la même manière que vous avez exclu des assemblys entiers.

Supposons que vous souhaitiez ignorer une méthode appelée DoStuff contenue dans une classe MyStuff, qui se trouve dans la bibliothèque MyAwesomeAssembly. Ensuite, votre XML dotCover devrait ressembler à ceci:

<Filters>
  <ExcludeFilters>
     <FilterEntry>
       <ModuleMask>MyAwesomeAssembly</ModuleMask>
       <ClassMask>MyStuff</ClassMask>
       <FunctionMask>DoStuff</FunctionMask>
     </FilterEntry>
  </ExcludeFilters>
</Filters>

Disclaimer: Je n'utilise pas dotCover, donc je ne suis pas sûr à 100% si cela fonctionnera réellement.

2
Adam Lear

Voici ce que disent les documents de TeamCity sur les options de filtrage:

Spécifiez les assemblages pour en profiler un par ligne en utilisant la syntaxe suivante: +: myassembly =; type = ; méthode = *  

Utilisez -: myassembly Pour exclure un assemblage de la couverture de code. Le caractère générique astérisque (*) est pris en charge ici. 

0
stealf