0

我有几个 Junit 测试课程。我想在 2 个线程中运行它们,所以包括maxParallelForks = 2. 我想确保同一类的测试按顺序在同一线程中运行。如何做到这一点?(我使用 SpringRunner。)

4

2 回答 2

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);
                }
            }
        });
    }
}
于 2017-11-30T06:58:05.273 回答
0

从快速浏览 Gradle 源代码中我可以看出,这应该正是您想要的选项。maxParallelForks使测试并行执行,而不是单个测试方法。

于 2017-11-28T13:44:02.047 回答