Ncrunch 从单元测试中排除私有方法
有没有办法从测试中排除私有方法,这样就不会为私有方法生成黑条,并且它们的代码覆盖率不会影响被测试类的代码覆盖率?要从代码覆盖率中排除任何方法,可以使用。我相信NCrunch将尊重这一属性 您还可以使用注释将代码从代码覆盖范围中排除。详细说明。工作原理: NCrunch识别3种不同类型的覆盖率抑制注释:Ncrunch 从单元测试中排除私有方法,ncrunch,Ncrunch,有没有办法从测试中排除私有方法,这样就不会为私有方法生成黑条,并且它们的代码覆盖率不会影响被测试类的代码覆盖率?要从代码覆盖率中排除任何方法,可以使用。我相信NCrunch将尊重这一属性 您还可以使用注释将代码从代码覆盖范围中排除。详细说明。工作原理: NCrunch识别3种不同类型的覆盖率抑制注释: //ncrunch:no coverage start-用代码覆盖率抑制标记代码块的开始 //ncrunch:no coverage end-用代码覆盖率抑制标记代码块的结束 //ncrunch
- //ncrunch:no coverage start-用代码覆盖率抑制标记代码块的开始
- //ncrunch:no coverage end-用代码覆盖率抑制标记代码块的结束
- //ncrunch:no coverage-标记用于代码覆盖率抑制的单个代码行(放在该行的末尾)
仅仅因为你的方法是私有的,并不意味着你的测试不应该涵盖它们。您的测试应该测试您的类的外部行为(当我给出这些输入时,我得到这些输出)或者您的类与其依赖项的内部交互(当我用这些值调用此方法时,我的类调用其依赖对象的此方法)。类上的某些方法是私有的这一事实与实现细节无关。如果您的测试调用了您的类,但无法使用您的私有方法,那么这很可能是您的类存在其他问题的一个指示器,就像它做得太多一样
您是否有想要从代码覆盖范围中排除的私有方法的真实示例,也许我们可以帮助您看看是否还有其他问题。好吧,因为私有方法在我的测试项目中不可访问。@lejon我已经编辑了我的答案,以便根据您的评论添加更多细节。查看测试中未包含的实际代码可能很有用。可能私有方法具有db依赖性等。。在这种情况下,即使您将您的方法公开为虚拟并覆盖它,nCrunch仍然抱怨代码未涵盖。“类上的某些方法是私有的这一事实与实现细节无关。”-说得很好。它的最佳实践是“测试接口,而不是实现”,私有方法将通过调用公共方法来覆盖,或者根本不调用