我有一个现有的C#4项目,我通过使用TestDriven.Net和Visual Studio覆盖功能检查了测试覆盖率,即Test With - >上下文菜单中的覆盖范围。
该项目包含一些我不想覆盖的代码,我通过为这些类型和方法添加[ExcludeFromCodeCoverage]
来解决这个问题。
我们刚刚将TeamCity升级到6.0.3,并且我已将dotCover coverage添加到NUnit构建步骤。
我已经设法在“过滤器”部分删除外部程序集(如NHibernate)的覆盖范围(通过明确说明我想要覆盖的程序集),但我正在努力解决如何从覆盖的程序集中排除类型和方法
答案 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程序 从代码覆盖中排除程序集。这里支持星号通配符(*)。