在同一个类中调用其他方法的方法:糟糕的设计?

时间:2013-01-18 20:43:44

标签: java oop easymock

EasyMock 3.0文档(http://www.easymock.org/EasyMock3_0_Documentation.html)声称它是,但没有解释为什么(强调我的):

  

有时您可能只需要模拟某个类的某些方法并保留   他人的正常行为。 这通常发生在您想要时   测试一个方法,在同一个类中调用其他人。所以你想要   保持测试方法的正常行为并嘲笑其他方法。

     

在这种情况下,首先要做的是考虑重构   大部分时间这个问题都是由糟糕的设计引起的。

那么,这是正确的吗?为什么?

2 个答案:

答案 0 :(得分:2)

问题不在于调用自己的方法,而是模拟这些调用的必要性表明了另一个问题。否则,您可以只测试公共方法并验证其行为。您不应该关心一个人调用的其他方法,而只关心可观察的行为。

答案 1 :(得分:1)

一如既往,这取决于。

方法一直调用其他方法;这是(IMO正确)重构的自然结果,将其他方法切割成大小。对我来说,问题就是你 来嘲笑那些微小的正确方法而不能在没有这样做的情况下进行测试。

如果有很多小方法,它们可能更适合包装在某种类型的协作者类中,此时你会嘲笑协作者,而不是内部方法。

此外,这些小内部方法可能是私有方法,其测试是一个争论的主题。