Проверьте, что void метод не вызывается с EasyMock - PullRequest
15 голосов
/ 14 сентября 2010

Возможно ли это?Я пробовал с EasyMock.expectLastCall().times(0);, но EasyMock жалуется, что время должно быть> = 1

Ответы [ 6 ]

21 голосов
/ 17 января 2013

Вы можете использовать .andThrow(new AssertionFailedError()).anyTimes(); - это то же исключение, которое бросает Assert.fail(), но оно менее многословно, чем Answer.

10 голосов
/ 30 мая 2011

с easymock 3.0, вам нужно добавить .anyTimes () в функцию waitLastCall, иначе тест не пройден:

Expectation failure on verify: myMethod(): expected: 1, actual: 0`

на основе примера nkr1pt:

expectLastCall().andAnswer(new IAnswer() {
    public Object answer() {
      Assert.assertFail();
      return null;
    }
}).anyTimes();
7 голосов
/ 23 августа 2012

Тот факт, что какой-то метод не вызывается, контролируется Mock или StrictMock.Они вызовут исключение, когда будет вызван этот незаписанный метод.Эта проблема возникает только при использовании NiceMock s, где значения по умолчанию возвращаются при вызове незаписанных методов.

Таким образом, решение может быть не использовать NiceMock s .

1 голос
/ 17 сентября 2010

Если вы ожидаете, что ваш метод не будет вызван, просто не записывайте его.Но я согласен, что это не сработает с хорошим издевательством.

1 голос
/ 15 сентября 2010

Похоже, ошибка для меня.Внутренний класс Range не позволяет установить максимум меньше 1.

Не могли бы вы высмеять этот метод и просто вызвать Assert.fail()?

0 голосов
/ 16 сентября 2010

Мне удалось найти решение:

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