0

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

有时您可能只需要模拟类的某些方法并保持其他方法的正常行为。这通常发生在您想要 测试调用同一类中其他一些方法的方法时。因此,您希望保持被测试方法的正常行为并模拟其他方法。

在这种情况下,首先要做的是考虑重构,因为 大多数时候这个问题是由糟糕的设计引起的。

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

4

2 回答 2

2

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

于 2013-01-18T20:48:09.500 回答
1

一如既往,这取决于。

方法一直在调用其他方法;这是(IMO 适当的)重构的自然结果,将其他方法切成小块。对我来说,问题在于你必须模拟那些微小的正确方法并且不这样做就无法测试。

如果有很多小方法,它们可能更合适地包装在某种协作者类中,此时您将模拟协作者,而不是内部方法。

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

于 2013-01-18T20:47:04.763 回答