java – JMockit和多个本地方法

假设我有类MyClass,方法是x(),y()和z().假设x()调用y(),y()调用z().

所以每当我测试x()时,都会调用y()和z().在模拟MyClass的依赖关系的情况下,我将不得不模拟x(),y()和z()中的依赖行为.

因此,如果我对方法x()的测试是testXWhen1(),testXWhen2()和testXWhen3(),我将不得不重复对每个测试方法中的依赖关系的期望.最后,我有一些代码,对于我的三个测试方法重复y()和z()内部发生的事情的期望.有什么办法可以避免这个吗

我的一个想法是尝试测试实际的x()方法,但是模拟y()和z().在那种情况下,我的MyClass实例应该部分是模拟,部分是真正的MyClass.可能吗?

另一个解决方案是严格关于x()中的期望,但不关注y()和z()中发生的事情……我想我可以用@NonStrict而不是@Mocked来做,但这不是我最喜欢的解决方案.

最佳答案 如果你想测试方法x()那么你应该模拟方法y().在那种情况下,不需要模拟z()也因为你永远不会在y()内部达到z()的调用(y是在不同的测试中测试你的x,y和z方法.使用PowerMock.It有createPartialMock方法.

点赞