【发布时间】:2012-11-24 19:46:09
【问题描述】:
我正在使用自定义运行设置文件来控制检查哪些项目的代码覆盖率。我使用了微软提供的默认模板,到目前为止,我已经能够毫无问题地排除我想要的项目。我的下一步行动是从代码覆盖范围中排除添加服务引用时由 Visual Studio 创建的自动生成的 Web 代理类。
这似乎应该与默认运行设置模板一起使用,因为它有一个看起来像这样的部分:
<Attributes>
<Exclude>
<!-- Don’t forget "Attribute" at the end of the name -->
<Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
<Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
<Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
<Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
<Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
</Exclude>
</Attributes>
添加服务引用时创建的所有类都使用 GeneratedCodeAttribute 进行修饰,因此应将它们全部排除。但是,当我运行代码覆盖率时,它们不会被忽略,因此代码覆盖率会报告一大块未覆盖的代码。我已经多次尝试使用正则表达式,试图让它正确选择属性,但无济于事。
如果您能就以下任一方法提出建议,我将不胜感激: - 让这个属性排除工作 - 不需要我排除整个项目或使 runsettings 文件成为非通用文件的替代方法(我们希望在所有项目中重复使用此基本文件而无需特定编辑)
仅供参考 - 虽然我知道还有其他代码覆盖工具,但我的目标是让 Visual Studio 能够正常工作,因此在这种情况下,关于切换到另一种工具的建议对我没有帮助。
【问题讨论】:
标签: unit-testing visual-studio-2012 mstest code-coverage visual-studio-test-runner