4

我正在使用White框架针对我的应用程序用户界面编写测试。然后我使用 OpenCover 运行它们并使用 ReportGen 创建测试覆盖率报告。

我对结果的唯一抱怨是我的报告结合了两者MyForm.cs,并且MyForm.Designer.cs在生成报告时包含了多少 MyForm 类。我的问题是,如果任何测试触及 MyForm 那么所有代码​​在.Designer.cs文件被添加到报告中(这些文件只包含一个自动生成的方法来创建由构造函数触发的所有控​​件)。该文件的内容只是样板文件,不包含任何有用的逻辑。然而,特别是在很薄的类中,这个文件最终可能会占到类中总代码的很大一部分。尽管我的测试很少或根本没有接触到任何可以从测试中受益的代码,但这会导致类显示出高水平的覆盖率。(例如测试“显示我的表单”按钮创建了一个“我的表单”对话框将导致所有内容MyForm.Designer.cs被列为已覆盖,但不会实际测试 MyForm 类中的任何 UI 逻辑。)

OpenCover的-filter参数仅适用于类/命名空间级别;所以我不能使用它们来仅排除设计器文件的内容(或其中的 InitializeComponents 函数)。有没有其他方法可以过滤用于生成报告的代码以将其从输出中排除?

4

3 回答 3

11

您可以使用 -excludebyfile 开关排除文件:

-excludebyfile:*\*Designer.cs
于 2013-07-18T22:27:13.690 回答
1

OpenCover 有一个-excludefile:<filter>功能

于 2013-06-05T05:07:26.670 回答
1

在 VB.NET 中,我将其排除在外。带有排除过滤器的命名空间:

-filter:"+[GoodStuff*]* -[*]*.My.*"
于 2013-06-25T20:43:45.790 回答