EasyMock:测试不调用mock中的方法

Ian*_*Ian 24 easymock

根据标题,只是想知道是否有一个easymock机制来测试一个方法是否在它的生命周期内被调用.

Cal*_*ton 22

我知道这个问题已经很老了,但我和OP有同样的问题并且做了一些更多的考虑.我找到了以下解决方案:

通过.andThrow(new AssertionFailedError()).anyTimes();在EasyMock声明的末尾添加,在调用模拟方法时测试将失败.

这比仅仅不使用NiceMock并且由于取消模拟方法调用而让测试失败的原因是因为这允许您专门测试在给定方案中未调用XYZ方法.

我想给David Wallace这个答案.我在下面的帖子中找到了这个解决方案:测试使用EasyMock调用void方法

  • 我相信这应该是公认的答案.原因是单元测试通常会随着新要求而改变,并且很容易错过为什么没有设置模拟期望.此解决方案使缺少的方法调用显式,因此需要更改代码的人员的更多关注. (2认同)

Wim*_*nen 16

从EasyMock 文档:

好的模拟

在mock()返回的Mock对象上,所有方法的默认行为是为所有意外的方法调用抛出AssertionError.如果你想要一个"漂亮的"Mock对象,默认情况下允许所有方法调用并返回适当的空值(0,null或false),请改用niceMock().

所以你要问的是默认行为.

  • 从我对问题的阅读来看,OP想要一个模拟,如果它被调用,验证将失败。好的模拟并不是OP想要的,因为当在测试期间调用好的模拟时,它仍然可以通过验证。 (2认同)

Dan*_*iuc 11

默认情况下,Easymock将为您未明确设置期望的任何调用方法抛出异常.