c# teamcity code-coverage dotcover

c# - ¿Cómo excluyo los tipos y métodos de ser cubierto por dotCover en TeamCity?



code-coverage (3)

Echa un vistazo a la página de consejos y trucos de dotCover . Parece que puede configurar exclusiones en la sección Filtros, de forma similar a cómo excluyó ensamblajes completos.

Digamos que quiere ignorar un método llamado DoStuff contenido en una clase MyStuff , que está en la biblioteca MyAwesomeAssembly . Entonces tu dotCover XML debería verse más o menos así:

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

Descargo de responsabilidad: no uso dotCover, por lo que no estoy 100% seguro de que esto realmente funcione.

Tengo un proyecto existente de C # 4 para el cual he verificado la cobertura de la prueba al usar TestDriven.Net y la función de cobertura de Visual Studio, es decir, Probar con -> Cobertura en el menú contextual.

El proyecto contiene algún código que no quiero que se cubra, y lo he solucionado al agregar el [ExcludeFromCodeCoverage] para esos tipos y métodos.

Acabamos de actualizar TeamCity a 6.0.3, y he agregado la cobertura dotCover al paso de compilación de NUnit.

Logré eliminar la cobertura de ensamblajes externos como NHibernate en la sección "Filtros" (declarando explícitamente los ensamblajes para los que deseo cobertura), pero estoy luchando con la forma de excluir tipos y métodos de los ensamblajes cubiertos.


Esto es lo que los documentos de TeamCity dicen sobre las opciones de filtro:

Especifique ensamblados para el perfil uno por línea usando la siguiente sintaxis: +: myassembly = ; type = ; method = *

Use -: myassembly para excluir un ensamblaje de la cobertura del código. El comodín Asterisk (*) es compatible aquí.


Ok, Martin, ¡lo descubrí! Solo llevó una hora hurgar aleatoriamente en la sintaxis del filtro ... cuando la documentación dice agregar un filtro como este

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

Realmente quieren decir esto ... donde cualquier cosa en <> es reemplazada completamente por ti y cualquier otra cosa es un literal

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

Entonces, el filtro que quería era incluir un ensamblaje único (de un conjunto de ensamblajes) y luego excluir algunos espacios de nombres en ese ensamblaje. escribí

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