В случае выше, вы можете удалить исключение бросков без проблем. Однако в случае, когда у вас есть проверенное исключение, управлять кодом становится намного проще, если вы просто добавляете исключение throws. Посмотрите на альтернативу:
@Test public static void testIt() {
try {
foobar(); // throws an IOException
} catch (Exception e) {
fail("caught an exception " + e.getMessage());
}
}
вместо:
@Test public static void testIt() throws IOException {
foobar();
}
JUnit обрабатывает исключения точно так же, как ошибки утверждений (которые фактически реализованы как AssertionError), поэтому, если в вашем коде есть непредвиденное исключение, это приведет к неудачному тесту, что, вероятно, вам и нужно. И ваш тест намного понятнее
Если у вас есть ожидаемое исключение, вы можете указать его в качестве ожидаемого исключения в аннотации @Test или с помощью TestRule
ExpectedException .
Я часто использую это, когда проверяю исключения в своем коде. Гораздо проще добавить throws Exception
в ваш метод тестирования, чем список всех отмеченных исключений. Вы нарушаете правила чекстайла: -)
Хорошая практика? Скорее приемлемая практика. Это значительно облегчает сопровождение тестов, а код немного понятнее.