测试使用EasyMock调用void方法

时间:2010-09-14 16:09:32

标签: java unit-testing easymock

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

6 个答案:

答案 0 :(得分:21)

您可以使用.andThrow(new AssertionFailedError()).anyTimes(); - 这与Assert.fail()引发的异常相同,但不如发送Answer更简洁。

答案 1 :(得分:10)

使用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();

答案 2 :(得分:7)

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

因此解决方案可以不使用NiceMock s

答案 3 :(得分:1)

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

你能不能嘲笑那个方法,只需拨打Assert.fail()

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我设法找到了解决方案:

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