Прежде всего:
@Test(expected=IllegalArgumentException.class)
не следует рассматривать как правильный способ, особенно с таким общим исключением. Причина в том, что вы не можете контролировать, какой оператор в вашем методе тестирования на самом деле вызвал исключение. Также вы не можете делать какие-либо утверждения на ярлыке сообщения, причина и т. Д.
Использование try-catch
, точно окружающее строку, которая, как предполагается, выдает исключение, является правильным путем:
try {
shouldThrow()
fail("Expected exception");
} catch(XMLClientNotFound e) {
assertThat(e).hasMessage("Expected message"); //FEST-Assert syntax
}
Вы также можете попробовать JUnit @Rule
, который я написал некоторое время назад, чтобы сделать ваш тест более читабельным.