Мне нужно проверить InterruptedException
и ExecutionException
и написать JUnits для этого же.JUnit for future.get() Исключение сценария
Прошу совета по этому вопросу. Как я могу прерывать потоки для репликации сценария. populateDataForm
запустит новые потоки и добавит это в список фьючерсов.
Вот мой пример кода:
class MyTest{
public populateData(){
Collection<Future<?>> futures = new LinkedList<Future<?>>();
DataSet ds = Helper.populateDataForm(employee, futures);
waitForTaskCompletion(futures);
}
private waitForTaskCompletion(futures){
for (Future<?> future:futures) {
try {
future.get();
} catch (InterruptedException e) {
throw new CustomExcpetion("Message1", e)
} catch (ExecutionException e) {
throw new CustomExcpetion("Message2", e)
}
}
}
Thanks Sqeezer for совет. Он отлично работал для генерации сценария ExecutionException, но я не мог получить одно и то же сообщение об исключении для InterruptedException, когда писал JUnit с @Rule. – Sameer
Для тестирования сценария InterruptedException с помощью @Rule нам необходимо прервать поток, выполняющий метод populateData(). Итак, после вызова метода populateData() из моего тестового класса, я прервал текущий поток с помощью Thread.currentThread(). Interrupt(). Поскольку тот же поток, который запускает TestMethod, запускает метод populateData(), и прерывания этого потока достаточно. – Sameer