有没有办法从测试中排除私有方法,这样就不会为私有方法生成黑条,并且它们的代码覆盖率不会影响被测类的代码覆盖率?
问问题
1522 次
1 回答
1
要从代码覆盖范围中排除任何方法,您可以使用[ExcludeFromCodeCoverageAttribute]
. 我相信 NCrunch 会尊重这个属性。
您还可以使用注释将代码排除在代码覆盖范围之外。文档中解释了详细信息。这个怎么运作:
NCrunch 识别 3 种不同类型的覆盖抑制注释:
- //ncrunch: no coverage start - 使用代码覆盖抑制标记代码块的开始。
- //ncrunch: no coverage end - 使用代码覆盖抑制标记代码块的结束。
- //ncrunch: no coverage - 标记单独的代码行以进行代码覆盖抑制(放置在行尾)。
使用 C# 以外的语言时,只需将“//”注释语法替换为特定于您的语言的语法即可。
我会质疑您为什么要从代码覆盖率计算中排除私有方法?它们肯定是您班级中需要测试的方法吗?
编辑
仅仅因为您的方法是私有的,并不意味着它们不应该被您的测试覆盖。您的测试应该测试您的类的外部行为(当我提供这些输入时,我得到这些输出)或您的类与其依赖项的内部交互(当我使用这些值调用此方法时,我的类调用其依赖项的此方法目的)。您的类中的某些方法是私有的这一事实与实现细节无关。如果您的测试调用了您的课程,但无法使用您的私有方法,那么这可能表明您的课程存在其他问题,例如它做得太多。
您是否有要从代码覆盖范围中排除的私有方法的真实示例,也许我们可以帮助看看这里是否还有其他问题。
于 2014-08-03T09:30:32.483 回答