我正在使用Visual Stdio 2010及其测试和代码覆盖功能,我有一堆生成的代码,我不希望将其包含在代码覆盖率结果中。这些是作为部分类生成的。
我在几个地方读过(例如:How to ignore generated code from code coverage data)我如何让代码覆盖工具忽略整个类或使用属性的特定成员。所以我修改了生成器以在它生成的所有类中包含[ExcludeFromCodeCoverage]
属性,但是这也阻止了我在部分中编写的代码也被跟踪以用于代码覆盖。
如何进行设置,以便我在代码覆盖率结果中包含部分中手动编写的代码,但生成的代码不是?我现在看到的唯一选择是挖掘生成器(一个冗长,丑陋的T4模板)并在属性/方法级别而不是在类级别添加[ExcludeFromCodeCoverage]
属性。还有另外一种方法吗?我没有看到像[IncludeFromCodeCoverage]
这样的东西,我可以添加到我手工编写的部分属性/方法中,以包含那些而忽略其余自动生成的类。
答案 0 :(得分:0)
在ExcludeFromCodeCoverage和其他How to ignore generated code from code coverage data节目中,您并不是唯一一个请求此条目的人。
我已经看到用其他一些(例如ncover,partcover)覆盖工具完成的另一种方法是对结果进行后处理,即如果XML使用xslt转换xml来删除覆盖数据与生成的部分相关,然后生成覆盖率报告。
您可以应用此方法或类似的内容,因为您可以访问XML中的覆盖率数据。
OpenCover有一个文件过滤器,允许您排除文件中与过滤器匹配的所有方法,仅为此场景创建,因为生成的文件的名称往往遵循已知模式,它还允许多个过滤