如何在TeamCity中排除dotCover所涵盖的类型和方法?

时间:2011-04-12 07:01:36

标签: c# teamcity code-coverage dotcover

我有一个现有的C#4项目,我通过使用TestDriven.Net和Visual Studio覆盖功能检查了测试覆盖率,即Test With - >上下文菜单中的覆盖范围。

该项目包含一些我不想覆盖的代码,我通过为这些类型和方法添加[ExcludeFromCodeCoverage]来解决这个问题。

我们刚刚将TeamCity升级到6.0.3,并且我已将dotCover coverage添加到NUnit构建步骤。

我已经设法在“过滤器”部分删除外部程序集(如NHibernate)的覆盖范围(通过明确说明我想要覆盖的程序集),但我正在努力解决如何从覆盖的程序集中排除类型和方法

enter image description here

3 个答案:

答案 0 :(得分:62)

好的,马丁,我明白了!它只需要花费一个小时的时间来搜索过滤器语法...当文档说要添加像这样的过滤器

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

他们真的是这个意思...... <>中的任何内容都被你完全取代,其他任何东西都是文字的

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

所以,我想要的过滤器是包含一个程序集(来自一堆程序集),然后在该程序集中排除一些名称空间。我写了

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

答案 1 :(得分:2)

查看dotCover Tips & Tricks页面。看起来您可以在“过滤器”部分设置排除项,类似于排除整个装配的方式。

假设您要忽略类DoStuff中包含的名为MyStuff的方法,该方法位于MyAwesomeAssembly库中。那么你的dotCover XML应该是这样的:

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

免责声明:我不使用dotCover,所以我不能100%确定这是否真的有效。

答案 2 :(得分:0)

这是TeamCity文档关于过滤器选项的说法:

使用以下语法指定程序集以每行配置一个:+:myassembly = ; type = ; method = *

使用 - :MyAssembly程序 从代码覆盖中排除程序集。这里支持星号通配符(*)。