我使用White框架针对我的应用程序用户界面编写测试。然后我使用OpenCover运行它们并使用ReportGen创建测试覆盖率报告。
我对结果的唯一投诉是,在生成有关MyForm类的覆盖范围的报告时,我的报告将MyForm.cs
和MyForm.Designer.cs
结合在一起。我的问题是,如果任何测试触及MyForm,那么.Designer.cs
文件中的所有代码都会被添加到报告中(文件只包含一个自动生成的方法来创建所有控件)由构造函数触发)。该文件的内容只是样板文件,不包含任何有用的逻辑。但是,特别是在较薄的类中,此文件最终可能占到类中总代码的很大一部分。这导致类显示高覆盖率,尽管我的测试几乎没有触及任何可以从测试中获益的代码。 (例如,测试“显示我的表单”按钮创建“我的表单”对话框将导致MyForm.Designer.cs
的所有内容被列为已涵盖但未实际测试MyForm类中的任何UI逻辑。)
OpenCover的-filter
参数仅适用于类/命名空间级别;所以我不能使用它们只排除设计器文件(或其中的InitializeComponents函数)的内容。有没有其他方法可以过滤用于生成报告的代码以将其从输出中排除?
答案 0 :(得分:10)
您可以使用-excludebyfile开关排除文件:
-excludebyfile:*\*Designer.cs
答案 1 :(得分:1)
OpenCover具有-excludefile:<filter>
功能
答案 2 :(得分:1)
在VB.NET中,我让它排除了My。带有排除过滤器的名称空间:
-filter:"+[GoodStuff*]* -[*]*.My.*"