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