如何测试私有函数或具有私有方法,字段或内部类的类?

如何测试私有函数或具有私有方法,字段或内部类的类?

如何对具有内部私有方法,字段或嵌套类的类进行单元测试(使用xUnit)?或者通过内部链接static在C / C ++中)或在私有(匿名)命名空间中使其成为私有的函数?

为了能够运行测试而更改方法或函数的访问修饰符似乎很糟糕。


犯罪嫌疑人X
浏览 1349回答 4
4回答

倚天杖

测试私有方法的最佳方法是通过另一种公共方法。如果无法执行此操作,则满足下列条件之一:私有方法是死代码您正在测试的课程附近有一种设计气味您尝试测试的方法不应该是私有的

喵喔喔

我过去曾使用反射来为Java做这个,在我看来这是一个很大的错误。严格来说,您不应该编写直接测试私有方法的单元测试。您应该测试的是该类与其他对象的公共合同; 你永远不应该直接测试对象的内部。如果另一个开发人员想要对该类进行少量内部更改(这不会影响类公共合同),则他/她必须修改基于反射的测试以确保其有效。如果在整个项目中反复执行此操作,则单元测试将不再是对代码运行状况的有用度量,并开始成为开发的障碍,并对开发团队造成烦扰。我建议改为使用代码覆盖工具(如Cobertura),以确保您编写的单元测试在私有方法中提供了良好的代码覆盖率。这样,您可以间接测试私有方法正在做什么,并保持更高的敏捷性。
打开App,查看更多内容
随时随地看视频慕课网APP