Я пытаюсь проверить, что конкретный метод вызывает ожидаемое исключение из метода. Согласно документации JUnit4 и этот ответ я написал тест как:
@Test(expected=CannotUndoException.class)
public void testUndoThrowsCannotUndoException() {
// code to initialise 'command'
command.undo();
}
Однако этот код не проходит тест JUnit, сообщая об исключении (и ожидаемом) как об ошибке.
У метода, который я тестирую, есть только это в теле:
public void undo() {
throw new CannotUndoException();
}
Кроме того, проходят следующие испытания:
public void testUndoThrowsCannotUndoException() {
// code to initialise 'command'
try {
command.undo();
fail();
} catch (CannotUndoException cue){
}
}
Это означает, что ожидаемое исключение фактически выдано.
Я на самом деле планирую изменить метод, чтобы он действительно что-то делал, а не просто выбрасывал исключение, но меня заинтересовало, что вызвало проблему, чтобы она не повторилась в будущем.
Были выполнены следующие проверки:
- Правильное исключение CannotUndoException, импортированное в тестовый пример
- версия 4 JUnit - единственная на моем пути к классам
- чистка и сборка рабочего пространства Eclipse не изменили результат
Я использую JUnit 4.1, и в том же тесте я использую Mockito.
Что может быть причиной ошибочного сбоя?