是否可以从代码覆盖率统计中排除实体框架自动生成的代码?

Stu*_*ser 5 unit-testing code-generation entity-framework code-coverage .net-4.0

我已经在资源和其他SO问题中看到了关于从覆盖率统计中提取代码的问题[DebuggerNonUserCode][ExcludeFromCodeCoverage]属性,并想知道是否可以自动将此属性添加到使用.NET 4.0的实体框架生成的代码中的类.

它还需要是类级别还是可以在diagram.Designer.cs级别上,需要一个属性来生成该图生成的所有代码?

Cra*_*ntz 6

是的,这是可能的.您可以使用自定义T4模板来控制codegen.这比你想象的要容易.

  • 需要考虑的是,部分类(实体框架创建)合并属性,因此如果要包含其他部分类中的扩展功能,则必须是方法级别. (3认同)

Stu*_*ser 2

由于分部类(实体框架创建的)合并属性,如果该属性是模板中的类级别,则其他分部类中的扩展功能也会被排除,因此必须在方法级别应用它。

我发现执行此操作的最佳方法是使用 T4(如@Craig Stuntz 的回答中所推荐)来:

  • 包括:using System.Diagnostics.CodeAnalysis;在文件顶部

然后[ExcludeFromCodeCoverage]通过搜索应用到 getter、setter 和 Factory 方法:

  • #>get
  • #>set
  • Template_FactoryMethodComment

并将它们放置在适当的地方。

使用Tangible 的 T4 编辑器 Extension for VS使这变得更加容易。

这是我的第一次尝试,它似乎有效,“您的里程可能会有所不同”,因此请完成测试运行以确保一切正常运行。