21

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

4

6 回答 6

25

您可以使用.andThrow(new AssertionFailedError()).anyTimes();- 这与Assert.fail()抛出的异常相同,但比生成Answer.

于 2013-01-16T20:58:04.843 回答
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();
于 2011-05-30T13:43:46.247 回答
8

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

所以一个解决方案可以是不使用NiceMocks

于 2012-08-23T14:51:44.703 回答
1

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

于 2010-09-16T21:54:12.513 回答
1

对我来说似乎是一个错误。内部类Range不允许设置小于 1 的最大值。

你不能模拟那个方法,然后打电话Assert.fail()吗?

于 2010-09-15T06:54:29.067 回答
0

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

expectLastCall().andAnswer(new IAnswer() {
    public Object answer() {
        Assert.assertFail();
        return null;
    }
});
于 2010-09-15T20:54:07.753 回答