测试使用EasyMock调用void方法

这可能吗? 我尝试使用EasyMock.expectLastCall().times(0); 但EasyMock抱怨时间必须> = 1

你可以使用.andThrow(new AssertionFailedError()).anyTimes(); – 这与Assert.fail()抛出的exception相同,但是比制作AnswerAssert.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(); 

未调用某些方法的事实由MockStrictMock控制。 当调用未记录的方法时,它们将抛出exception。 只有在使用NiceMock时才会出现此问题,其中在调用未记录的方法时返回默认值。

所以解决方案可能不是使用NiceMock

对我来说看起来像个错误。 内部类Range不允许将最大值设置为小于1。

难道你不能模拟那个方法,只是调用Assert.fail()

如果您希望不要调用您的方法,那么就不要记录它。 但我同意它不适用于一个很好的模拟。

我设法提出了一个解决方案:

 expectLastCall().andAnswer(new IAnswer() { public Object answer() { Assert.assertFail(); return null; } });