Подтвердить что ты не робот

Проверить, что метод void не вызывался с помощью EasyMock

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

с помощью easymock 3.0 вам нужно добавить .anyTimes() в expectLastCall или выполнить тест:

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

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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