如何测试私有函数或具有私有方法,字段或内部类的类?如何对具有内部私有方法,字段或嵌套类的类进行单元测试(使用xUnit)?或者通过内部链接(static在C / C ++中)或在私有(匿名)命名空间中使其成为私有的函数?为了能够运行测试而更改方法或函数的访问修饰符似乎很糟糕。
4 回答
倚天杖
TA贡献1828条经验 获得超3个赞
测试私有方法的最佳方法是通过另一种公共方法。如果无法执行此操作,则满足下列条件之一:
私有方法是死代码
您正在测试的课程附近有一种设计气味
您尝试测试的方法不应该是私有的
喵喔喔
TA贡献1735条经验 获得超5个赞
我过去曾使用反射来为Java做这个,在我看来这是一个很大的错误。
严格来说,您不应该编写直接测试私有方法的单元测试。您应该测试的是该类与其他对象的公共合同; 你永远不应该直接测试对象的内部。如果另一个开发人员想要对该类进行少量内部更改(这不会影响类公共合同),则他/她必须修改基于反射的测试以确保其有效。如果在整个项目中反复执行此操作,则单元测试将不再是对代码运行状况的有用度量,并开始成为开发的障碍,并对开发团队造成烦扰。
我建议改为使用代码覆盖工具(如Cobertura),以确保您编写的单元测试在私有方法中提供了良好的代码覆盖率。这样,您可以间接测试私有方法正在做什么,并保持更高的敏捷性。
添加回答
举报
0/150
提交
取消