有没有办法从测试中排除私有方法,这样就不会为私有方法生成黑条,而且它们的代码覆盖率不会影响被测试类的代码覆盖率?
答案 0 :(得分:2)
要从代码覆盖中排除任何方法,您可以使用[ExcludeFromCodeCoverageAttribute]
。我相信NCrunch会尊重这个属性。
您还可以使用注释从代码覆盖范围中排除代码。细节解释为in the documentation。工作原理:
NCrunch识别3种不同类型的覆盖抑制注释:
使用C#以外的语言时,只需使用特定于您的语言的语法替换'//'注释语法。
我会问你为什么要从代码覆盖率计算中排除私有方法?他们肯定是你班上需要测试的方法吗?
修改强>
仅仅因为您的方法是私有的,并不意味着它们不应该被您的测试覆盖。你的测试应该测试你的类的外部行为(当我给这些输入时我得到这些输出)或者你的类与它的依赖项的内部交互(当我用这些值调用这个方法时,我的类调用它的依赖它的方法宾语)。您的类上的某些方法是私有的这一事实是一个不相关的实现细节。如果您的测试调用了您的课程,但无法使用您的私人方法,那么这可能是您课程中其他问题的一个指标,就像它做得太多。
您是否有一个关于要从代码覆盖率中排除的私有方法的真实示例,也许我们可以帮助查看是否还有其他问题在这里发挥。