根据标题,只是想知道是否有一种带有 easymock 的机制来测试方法是否在其生命周期内未被调用。
4 回答
我知道这个问题已经很老了,但我和 OP 有同样的问题,并做了更多的环顾四周。我找到了以下解决方案:
通过.andThrow(new AssertionFailedError()).anyTimes();
在 EasyMock 声明的末尾添加,调用模拟方法时测试将失败。
这比简单地不使用 NiceMock 并因为未模拟的方法调用而让测试失败的原因是因为这允许您专门测试在给定场景中未调用 XYZ 方法。
我想把这个答案归功于大卫华莱士。我在他对以下帖子的回答中找到了这个解决方案:Test that void method didn't get call with EasyMock
来自 EasyMock文档:
漂亮的嘲笑
在 mock() 返回的 Mock 对象上,所有方法的默认行为是为所有意外的方法调用抛出 AssertionError。如果您想要一个默认情况下允许所有方法调用并返回适当的空值(0、null 或 false)的“漂亮”模拟对象,请改用 niceMock()。
所以你要问的是默认行为。
默认情况下,Easymock 将为您未明确设置期望的任何调用方法抛出异常。
这对我有用:
eastMockObject.method(arg); EasyMock.expectLastCall().andStubThrow(new AssertionError());