我有些课,出于这样或那样的原因,无法或不需要进行单元测试。我希望从覆盖率度量中排除这些类,以便更好地了解我实际关心的类的覆盖率。现在,我必须排除事后结果。我希望做的是使用属性将这些类标记为已排除,以便它们不被“**有没有办法用一个属性来修饰一个类,这个属性会自动将它从覆盖率分析中排除?**VS覆盖率分析或nCover都可以。
FWIW,这些类我可以通过检查来保证代码是正确的。大多数情况下,它们是围绕现有框架类的 Package 类,我引入这些类是为了能够模拟框架类。由于 Package 类被模拟出来,所以它们不会被测试。这没关系,因为它们所做的一切就是 Package 我所关心的框架类的方法。
4条答案
按热度按时间ubby3x7f1#
从VS2010开始,我们有
ExcludeFromCodeCoverageAttribute
。评论者注意到这可以在NCover和DotCover + NUnit中使用。示例用法:他们建议使用VSInstr作为命令行工具,它有/EXCLUDE选项(不方便)。
z18hc3ub2#
我在几个Diagnostics属性DebuggerNonUserCodeAttribute和DebuggerHiddenAttribute上发现了some information,这表明使用这些属性将导致VS中的覆盖率分析器将这些属性排除在其结果之外。我已经尝试过使用DebuggerNonUserCodeAttribute,它似乎工作正常。对于我正在考虑的大多数类,我可能可以接受这一点。虽然我不喜欢不能单步执行这些类的副作用,这对 Package 类来说应该不是问题,但对于本质上很难测试的类来说可能会是这样,我需要调试器访问。
不过,我还在寻找替代品。
y1aodyip3#
使用NCover,您可以创建一个属性,然后告诉NCover忽略该属性。
在我们的项目中,我们定义了这个属性(没有命名空间,所以很容易使用):
我们使用NAnt,所以我们有一个如下所示的目标:
NCover FAQ中的问题9描述了这种方法,我们的解决方案就是基于此。
或者,您可以使用NCoverExplorer的exclude功能从最终报告中排除命名空间和程序集。这只是从报告中删除数据,但最终结果是相同的。
我们使用两种技术。
nafvub8i4#
这对我有用!👍
在**.csproj**中使用:声纳键
或
然后通过ExcludeFromCodeCoverage from microsoft在类文件**.cs**中使用