Оставляя в стороне, как вы проверили отладочный вызов, вы обычно запускаете исключение, предоставляя подходящие входы, чтобы исключение было создано/выбрано. Если это не подходит, альтернативой является предоставление заменяющего (издевавшегося) компонента, который был сконфигурирован/написан для выброса исключения, например.
public MyClass(MyInjectedComponent component) {
this.component = component;
}
и вы бы предоставить для тестирования реализацию MyInjectedComponent
, что будет бросать исключение (для целей тестирования). Подход к инъекциям компонентов в другие компоненты называется dependency injection и стоит исследовать.
Обычно я использую фальшивую основу для этого (например, Mockito или тому подобное). Однако тривиальная реализация вышеуказанного может быть:
public class MyImplementationForTesting extends MyInjectedComponent {
public void method() throws Exception {
throw new Exception();
}
}
У меня есть тест, который генерирует исключение, и я могу успешно его утвердить. Но что, если мне нужно утверждать, что вызывается оператор журнала? – sotn
Я бы издевался над каротажным компонентом и вводил его –