Gradle запускает тестовые классы параллельно с методами того же класса, работающими в том же потоке

У меня есть несколько тестовых классов Junit. Я хочу запустить их в 2 потока, поэтому включены maxParallelForks = 2, Я хочу убедиться, что тесты одного и того же класса выполняются в одном потоке последовательно. Как этого добиться? (Я использую SpringRunner.)

2 ответа

Я использовал @RunWith(Suite.class) запустить несколько тестовых классов. Поэтому я создал новый класс Runner, и это решило мою проблему.

public class ParallelExecutor extends Suite {

    public ParallelExecutor(Class<?> klass, RunnerBuilder builder) throws InitializationError, IOException, InterruptedException {
        super(klass, builder);

        setScheduler(new RunnerScheduler() {

            private final ExecutorService service = Executors.newFixedThreadPool(10);

            public void schedule(Runnable childStatement) {
                service.submit(childStatement);
            }

            public void finished() {
                try {
                    service.shutdown();
                    service.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
                } catch (InterruptedException e) {
                    e.printStackTrace(System.err);
                }
            }
        });
    }
}

Насколько я вижу из быстрого взгляда на источники Gradle, это именно тот вариант, который вам нужен. maxParallelForks заставить классы теста выполняться параллельно, а не отдельные методы тестирования.

Другие вопросы по тегам