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