测试使用EasyMock调用void方法
这可能吗? 我尝试使用EasyMock.expectLastCall().times(0);
但EasyMock抱怨时间必须> = 1
你可以使用.andThrow(new AssertionFailedError()).anyTimes();
– 这与Assert.fail()
抛出的exception相同,但是比制作Answer
更Assert.fail()
。
使用easymock 3.0,您需要在expectLastCall上添加.anyTimes(),否则测试将失败:
Expectation failure on verify: myMethod(): expected: 1, actual: 0`
基于nkr1pt示例:
expectLastCall().andAnswer(new IAnswer() { public Object answer() { Assert.assertFail(); return null; } }).anyTimes();
未调用某些方法的事实由Mock
或StrictMock
控制。 当调用未记录的方法时,它们将抛出exception。 只有在使用NiceMock
时才会出现此问题,其中在调用未记录的方法时返回默认值。
所以解决方案可能不是使用NiceMock
。
对我来说看起来像个错误。 内部类Range
不允许将最大值设置为小于1。
难道你不能模拟那个方法,只是调用Assert.fail()
?
如果您希望不要调用您的方法,那么就不要记录它。 但我同意它不适用于一个很好的模拟。
我设法提出了一个解决方案:
expectLastCall().andAnswer(new IAnswer() { public Object answer() { Assert.assertFail(); return null; } });