Ответ 1
Мне удалось найти решение:
expectLastCall().andAnswer(new IAnswer() {
public Object answer() {
Assert.assertFail();
return null;
}
});
Возможно ли это?
Я пытался с EasyMock.expectLastCall().times(0);
, но EasyMock жалуется, что время должно быть >= 1
Мне удалось найти решение:
expectLastCall().andAnswer(new IAnswer() {
public Object answer() {
Assert.assertFail();
return null;
}
});
Вы можете использовать .andThrow(new AssertionFailedError()).anyTimes();
- это то же исключение, что Assert.fail()
выбрасывает, но менее подробно, чем создание Answer
.
с помощью 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();
Тот факт, что какой-то метод не вызывается, управляется Mock
или StrictMock
. Они будут вызывать исключение, когда вызывается этот не записанный метод. Эта проблема возникает только при использовании NiceMock
s, где значения по умолчанию возвращаются при вызове не записанных методов.
Таким образом, решение может быть не в использовании NiceMock
s.
Похож на ошибку. Внутренний класс Range
не позволяет установить максимум меньше 1.
Не могли бы вы издеваться над этим методом и просто позвонить Assert.fail()
?
Если вы ожидаете, что ваш метод не будет вызван, просто не записывайте его. Но я согласен, что это не сработает с хорошим макетом.