2
Это первый раз, я пытаюсь написать JUnit для многопоточной Java-программы.Как проверить метод, который создает отдельный поток?
У меня есть метод, который выглядит ниже, Можете ли вы предложить, как я могу написать JUnit для этого? или указать на такие подобные примеры? Большое спасибо в Advance ... !!
public void myMethod(Input input) {
if (!this.isStreamingPaused()) {
ExecutorService publisherThreadPool = getThreadPool();
PublisherThread publisher = new PublisherThread();
publisher.setInputData(input);
publisherThreadPool.execute(publisher);
publisherThreadPool.shutdown();
}
}
public ExecutorService getThreadPool() {
final ThreadFactory threadFactory = new BasicThreadFactory.Builder()
.namingPattern("MyName-%d")
.priority(Thread.NORM_PRIORITY)
.build();
return Executors.newFixedThreadPool(1, threadFactory);
}
Отдельные ваши проблемы. Как следует из названия, модульные тесты должны ориентироваться на единицы функциональности. Попробуйте один тест для класса, который порождает поток, и второй тест для самого класса потоков. – EJK
Спасибо EJK за ответ. Я собираюсь написать отдельный junit для основной функциональности в потоке PublisherThread, но я обеспокоен тем, что, как я могу проверить, что блок кода внутри myMethod, который генерирует поток? – user3452558
Обратите внимание, что создание пула потоков подобно этому означает, что вы не можете выполнить 'myMethod' более одного раза. Вы также можете проверить, закрыт ли исполнитель, а также создать новый экземпляр в этом случае. –