Я пишу несколько тестов JUnit, которые проверяют, что выбрано исключение типа MyCustomException
. Тем не менее, это исключение обернуто в другие исключения несколько раз, например. в InvocationTargetException, которое, в свою очередь, завернуто в исключение RuntimeException.
Какой лучший способ определить, почему MyCustomException каким-то образом вызвало исключение, которое я действительно поймал? Я хотел бы сделать что-то вроде этого (см. Подчеркнутое):
try { doSomethingPotentiallyExceptional(); fail("Expected an exception."); } catch (RuntimeException e) { if (!e.
wasCausedBy(MyCustomException.class) fail("Expected a different kind of exception."); }
Я хотел бы избежать вызова getCause()
нескольких "слоев" в глубину и подобных уродливых обходов. Есть ли лучший способ?
(По-видимому, Spring имеет NestedRuntimeException.contains(класс), который делает то, что я хочу - но я не использую Spring.)
ЗАКРЫТО: Хорошо, я думаю, что на самом деле не существует способа утилиты:-) Спасибо всем, кто ответил!