如何忽略代码覆盖率数据中生成的代码

时间:2010-07-26 18:40:00

标签: unit-testing visual-studio-2010 code-coverage

我正在使用Visual Studio 2010,并希望从我的代码覆盖率统计信息中排除生成的服务引用代码。

我发现2010年前的article提到了使用DebuggerNonUserCode和DebuggerHidden属性。我试过这个,它像宣传的那样工作。 DebuggerNonUserCode在类级别设置,但在每个生成的服务引用代码文件中生成50多个类,这不是一个有吸引力的选项。

有没有人有任何替代解决方案?

4 个答案:

答案 0 :(得分:14)

生成的类是部分的。如果在项目中使用相同的命名空间和类声明创建新类,则可以将[ExcludeFromCodeCoverage]属性添加到分部类中。这样,无论何时刷新引用,都不必返回并编辑Reference.cs文件。

答案 1 :(得分:3)

Reference.cs中,您可以找到现有属性,例如[System.Diagnostics.DebuggerStepThroughAttribute()],然后搜索并替换为[System.Diagnostics.DebuggerStepThroughAttribute()][System.Diagnostics.DebuggerNonUserCode()]
主要缺点是每次更新引用时都必须重做。

我不明白为什么MS不会使代码覆盖工具足够智能以跳过服务引用生成的代码。

答案 2 :(得分:3)

System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage可以在课堂上使用。这是一个糟糕的选择,因为您需要在重新生成代码时重做此选项。也许微软可以在创建服务引用,实体框架类型等时自动为我们做这件事......

答案 3 :(得分:2)

您可以创建一个代码生成器,使用DebuggerNonUserCode属性发出部分类。