Как заставить JUnit вести себя так же, как Java, работающая из командной строки

Я заметил, что когда модульный тест завершается, все созданные потоки автоматически уничтожаются, это сильно отличается от программы Java, работающей из командной строки. В командной строке программа не завершается до тех пор, пока не будут завершены все потоки, не являющиеся демонами.

Как проверить случай, связанный с порожденным потоком, с помощью jUnit?


person user705414    schedule 14.04.2011    source источник
comment
Итак, у вас есть тестовый пример, который порождает поток и должен дождаться его завершения, чтобы проверить его результаты? Если это так, не можете ли вы заставить тестовый пример дождаться завершения потока с помощью соединения? И не могли бы вы реорганизовать код, чтобы можно было протестировать функциональность без отдельного потока?   -  person DaveH    schedule 14.04.2011
comment
Метод, который мне нужно проверить, создает поток.   -  person user705414    schedule 14.04.2011
comment
Если тестируемый метод возвращает ссылку на созданный поток, присоединяйтесь к нему. Если это не так, создайте свой собственный поток для вызова тестируемого метода и присоединитесь к нему.   -  person DaveH    schedule 14.04.2011
comment
@ Дэйв, спасибо. Не могли бы вы добавить эти комментарии к ответам?   -  person user705414    schedule 14.04.2011


Ответы (2)


Если тестируемый метод возвращает ссылку на созданный им поток, присоединяйтесь к нему. Если это не так, создайте свой собственный поток для вызова тестируемого метода и присоединитесь к нему.

person DaveH    schedule 14.04.2011

Я бы посоветовал вам сделать ваши модульные тесты shutdown() такими компонентами, чтобы они возвращались в состояние до начала теста. На самом деле это может не требоваться в работающей системе, но позволяет запускать несколько тестов много раз.

Вы можете даже сделать снимок запущенных потоков в начале и проверить после теста, нет ли новых потоков (могут быть некоторые ожидаемые, которые в порядке)

person Peter Lawrey    schedule 14.04.2011