Тесты JUnit против многопоточности - PullRequest
0 голосов
/ 23 октября 2019

При выполнении одного теста 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...