Возможно ли это?
Я пытался с EasyMock.expectLastCall().times(0);
, но EasyMock жалуется, что время должно быть >= 1
Проверить, что метод void не вызывался с помощью EasyMock
Ответ 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
Если вы ожидаете, что ваш метод не будет вызван, просто не записывайте его. Но я согласен, что это не сработает с хорошим макетом.