我目前正在为面向对象的Matlab编写的项目实施单元测试。
从设计中可以理解,我无法从测试类中的测试方法访问类的私有方法。
是否有任何解决方法直接测试这些方法而不公开它们?
答案 0 :(得分:4)
如果您需要直接测试它们,最简单的方法就是将它们公开。
另一种方法是让它们受到保护,然后让一个带有一堆额外公共方法的子类调用受保护的方法来测试它们(也许每个被测试的方法都有一个,它们只是通过直接呼叫受保护的人。)
然而,这个问题的前提与单元测试的观点背道而驰:你应该测试你的类提供的公共接口/契约,这只是它的公共方法。只要公共方法经过充分测试,任何私有方法都只是实现细节。
另一种看待事物的方法可能是,如果你的方法确实需要测试,那么将其移入自己的类可能是值得的。