Тестирование Exception в JUnit5
Всем привет. У меня возник вопрос по поводу тестирования кастомного Exception. У меня есть класс:
public class CustomException extends RuntimeException{
private final String zhliga;
public CustomException(String warningMessage,String zhliga) {
super(warningMessage);
this.zhliga = zhliga;
}
public String getZhliga() {
return zhliga;
}
}
CustomException я выкидываю в методе, который сохраняет объект в массив, при выходе за пределы массива.
public void save(Object obj) {
int index = getIndex(obj.getZhliga());
if (index >= 0) {
throw new ExistStorageException(obj.getZhliga());
} else if (size >= ARRAY_LIMIT) {
throw new CustomException("Array overflow", obj.getZhliga());
} else {
addObjectToArray(obj, index);
size++;
}
}
Так вот вопрос как протестировать в Junit5 мой CustomException отдельным методом? Благодарю, что уделили внимание моему вопросу.
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
Думаю как-то так:
@Test
public void customExceptionThrown() {
CustomException exception =
assertThrows(CustomException.class, () -> {
for (int i = 0; i <= ARRAY_LIMIT; i++) {
save(new Object());
}
});
assertEquals(
"Array overflow",
exception.getMessage());
}
Соответственно на последней итерации когда i будет равен ARRAY_LIMIT мы получим наше кастомное исключение CustomException и проверим, что в нем содержатся необходимые данные.
Либо уже нужно из изначального метода вынести процедуру вставки в отдельный метод и тестить отдельно.