Проблема в Assertions
, она объявляет AbstractThrowableAssert<?, ? extends Throwable> assertThat(Throwable t)
вместо <T> AbstractThrowableAssert<?, T extends Throwable> assertThat(T t)
Но, к сожалению, это невозможно сделать из-за следующего существующего метода, который конфликтует с ним: public static <T> ObjectAssert<T> assertThat(T actual)
.
Кастинг - это решение, я согласен, что оно не очень изящно.
В этом случае я бы просто сделал:
assertThat(myCustomException.isMyCustomFieldSet()).isTrue();
или оставить утверждения на myCustomException
напрямую:
assertThat(myCustomException).hasFieldOrPropertyWithValue("myCustomFieldSet", true)
.hasFieldOrPropertyWithValue("myOtherField", "foo");
Недостатком здесь является доступ к полям по имени, что не способствует рефакторингу.