如何排除TeamCity中dotCover覆盖的types和方法?
我有一个现有的C#4项目,我已经通过使用TestDriven.Net和Visual Studio覆盖function,即Test With – > Coverage从上下文菜单检查了testing覆盖率。
该项目包含一些代码,我不想要覆盖,我解决了这些types和方法添加[ExcludeFromCodeCoverage]
。
我们刚刚将TeamCity升级到6.0.3,并且在NUnit构build步骤中添加了dotCover覆盖。
我已经设法删除“filter”部分中的外部程序集(例如NHibernate)(通过明确指出我想要覆盖的程序集),但我正在努力如何从覆盖程序集中排除types和方法。
好吧,马丁,我明白了! 它只花了一个小时的filter语法随机戳…当文档说,像这样添加一个filter
+:myassembly=*;type=*;method=***
他们真的是这个意思……凡是<>
中的任何东西都完全由你来代替,而其他任何东西都是一个文字
+:<myassembly>;type=<filter>;method=<filter>
所以,我想要的filter是包含一个程序集(从一些程序集中),然后在该程序集中排除一些名称空间。 我写了
+:Omnyx.Scanner -:Omnyx.Scanner;type=Omnyx.Scanner.Simulation.* -:Omnyx.Scanner;type=Omnyx.Scanner.ToolsCommon.*
看看dotCover提示和技巧页面。 看起来您可以在“filter”部分设置排除项目,就像您排除整个组件一样。
假设您要忽略MyStuff
包含的名为DoStuff
的方法,该方法位于MyAwesomeAssembly
库中。 那么你的dotCover XML应该看起来像这样:
<Filters> <ExcludeFilters> <FilterEntry> <ModuleMask>MyAwesomeAssembly</ModuleMask> <ClassMask>MyStuff</ClassMask> <FunctionMask>DoStuff</FunctionMask> </FilterEntry> </ExcludeFilters> </Filters>
免责声明:我不使用dotCover,所以我不能100%确定这是否真的有效。
这就是TeamCity文档中关于filter选项的说明:
指定程序集使用以下语法对每行进行一次分析:+:myassembly = ; type = ; method = *
使用 – :myassembly从代码覆盖范围中排除程序集。 此处支持星号通配符(*)。