При выполнении одного теста JUnit на основе неблокирующей схемы все потоки уничтожаются, когда метод теста завершает свою область действия. Например,
@Test
public void testMethod() {
System.out.println("Before Running Thread");
Runnable runnable = new Runnable() {
@Override
public void run() {
for(int index = 0; index <=1000; index++) {
System.out.println("Current index: " + index);
}
}
};
new Thread(runnable).start();
System.out.println("After Running Thread");
}
Очень возможный вывод:
Before Running Thread
Current index: 0
Current index: 1
Current index: 2
Current index: 3
After Running Thread
Теперь давайте рассмотрим поток, встроенный в метод @Before, и предположим, что более одного метода @Test полагается на егодействие, например:
class TestSuite {
Thread importantThread;
@Before
public void beforeTest(){
Runnable runnable = new Runnable() {
@Override
public void run() {
for(int index = 0; index <=1000; index++) {
System.out.println("Current index: " + index);
}
}
};
importantThread = new Thread(runnable);
importantThread.start();
}
@Test
public void testOne {
// Some action
}
@Test
public void testTwo() {
// Some action
}
}
Этот набор тестов будет выполнять важныйThread до конца выполнения метода теста, который будет выполняться как последний.
Мой вопрос: есть лигарантия того, что JUnit не убьёт основные промежуточные методы тестирования testOne и testTwo?