Gradle运行测试类与在同一线程中运行的同一类的方法并行运行

时间:2017-11-28 13:15:38

标签: java gradle junit springrunner

我有一些Junit测试课程。我想在2个线程中运行它们,因此包括maxParallelForks = 2。我想确保相同类的测试按顺序在同一个线程中运行。怎么做到这一点? (我使用SpringRunner。)

2 个答案:

答案 0 :(得分:1)

我正在使用@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);
                }
            }
        });
    }
}

答案 1 :(得分:0)

据我所知,通过快速查看Gradle来源,这应该是您想要的选项。 maxParallelForks使测试并行执行,而非单一测试方法。