从单元测试中排除私有方法

时间:2014-07-07 13:59:18

标签: ncrunch

有没有办法从测试中排除私有方法,这样就不会为私有方法生成黑条,而且它们的代码覆盖率不会影响被测试类的代码覆盖率?

1 个答案:

答案 0 :(得分:2)

要从代码覆盖中排除任何方法,您可以使用[ExcludeFromCodeCoverageAttribute]。我相信NCrunch会尊重这个属性。

您还可以使用注释从代码覆盖范围中排除代码。细节解释为in the documentation。工作原理:

NCrunch识别3种不同类型的覆盖抑制注释:

  • // ncrunch:无覆盖开始 - 标记代码覆盖率抑制的代码块的开头。
  • // ncrunch:无覆盖结束 - 标记代码覆盖率抑制的代码块结束。
  • // ncrunch:无覆盖 - 标记代码覆盖率抑制的单独代码行(位于行尾)。

使用C#以外的语言时,只需使用特定于您的语言的语法替换'//'注释语法。

我会问你为什么要从代码覆盖率计算中排除私有方法?他们肯定是你班上需要测试的方法吗?

修改

仅仅因为您的方法是私有的,并不意味着它们不应该被您的测试覆盖。你的测试应该测试你的类的外部行为(当我给这些输入时我得到这些输出)或者你的类与它的依赖项的内部交互(当我用这些值调用这个方法时,我的类调用它的依赖它的方法宾语)。您的类上的某些方法是私有的这一事实是一个不相关的实现细节。如果您的测试调用了您的课程,但无法使用您的私人方法,那么这可能是您课程中其他问题的一个指标,就像它做得太多。

您是否有一个关于要从代码覆盖率中排除的私有方法的真实示例,也许我们可以帮助查看是否还有其他问题在这里发挥。