Как я могу проверить, не вызвано ли какое-то конкретное исключение?

Могу ли я проверить, выбрано ли конкретное исключение не?

Другим способом легко использовать @Test[expect=MyException].

Но как я могу это отрицать?

Ответ 1

Если вы хотите проверить, не вызвано ли какое-либо конкретное исключение в состоянии, в котором могут быть выбраны другие исключения, попробуйте следующее:

try {
  myMethod();
}
catch (ExceptionNotToThrow entt){
  fail("WHOOPS! Threw ExceptionNotToThrow" + entt.toString);
}
catch (Throwable t){
  //do nothing since other exceptions are OK
}
assertTrue(somethingElse);
//done!

Ответ 2

catch-exception делает пример Freiheit немного более кратким:

catchException(a).myMethod();
assertFalse(caughtException() instanceof ExceptionNotToThrow);

Ответ 3

Вы можете сделать следующее, используя assertj

если вы хотите проверить, не выбрасывается ли исключение,

Throwable throwable = catchThrowable(() -> sut.method());

assertThat(throwable).isNull();

или вы ожидаете бросить

Throwable throwable = catchThrowable(() -> sut.method());

assertThat(throwable).isInstanceOf(ClassOfExecption.class)
                     .hasMessageContaining("expected message");