Я пытаюсь написать единичный тест, требующий многомиллионных потоков. Тем не менее, кажется, что потоки просто останавливаются частично через выполнение. Рассмотрим следующий код:Влияет на поведение в JUnit
public class Test {
@org.junit.Test
public void TestThreads() {
new Thread(new Runnable() {
public void run() {
for (int i = 1; i < 1000; i++) System.out.println(i);
}
}).start();
}
}
Если я запустил этот модульный тест, он, как правило, перестанет отображать вывод где-то между 140-180. Если я конвертирую этот код в обычный класс и запускаю его, он отлично работает. Кто-нибудь знает, что мне здесь не хватает?
Thanks, - Andrew.
Сказать, что объекты JUnit 'deletees' немного вводят в заблуждение, поскольку в Java нет способа явно удалить объект. –
@Martin правый. но JVM может вернуть (GC), когда объект больше не нужен. Как только тесты будут выполнены, JUnit убивает потоки и в основном весь JVM. – goblinjuice
@goblinjuice, что не означает, что JUnit вообще убивает экземпляр объекта. Поскольку JVM завершает работу, каждый бит памяти будет освобожден. –