создаю простой сервис например:
public class MyService {
public void process() {
try {
CustomerMessagesService customerMessagesService = new CustomerMessagesService();
String message = customerMessagesService.getMessage();
// another logic which can throw an exception
SpamCenterService spamCenterService = new SpamCenterService();
spamCenterService.sendAdvertise(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Эта услуга вызывается с Планировщик каждую 1 секунду.
customerMessagesService
вернуть сообщение с рекламным текстом или выдать исключение, если это сообщение содержит недопустимый текст. Если customerMessagesService
вернуть текст успеха - это отправить на spamCenterService
, а если customerMessagesService
сгенерировать исключение - это исключение только что зарегистрировано. Есть еще одна логика, которая может генерировать исключения между вызовами этих сервисов. Это исключение также регистрируется.
Теперь я хочу создать модульный тест для этого метода. Но я не понимаю, как проверить метод void
с блоком try..catch
.
Я создаю это:
public class MyServiceTest {
private MyService myService;
@Before
public void setUp() {
myService = new MyService();
}
@Test
public void process() {
myService.process();
}
}
Но это всегда успех, потому что метод процесса не генерирует исключения.
Как я могу проверить этот метод?
EDIT
Я нашел одно решение, но я не уверен в этом.
открытый класс MyServiceImpl реализует MyService {
public void process() {
try {
doIt();
} catch (Exception e) {
e.printStackTrace();
}
}
public void doIt() throws Exception {
CustomerMessagesService customerMessagesService = new CustomerMessagesService();
String message = customerMessagesService.getMessage();
// another logic which can throw an exception
SpamCenterService spamCenterService = new SpamCenterService();
spamCenterService.sendAdvertise(message);
}
}
И тест doIt()
метод в MyServiceImpl
.