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

标签 java gradle junit springrunner

我正在参加一些 Junit 测试类(class)。我想在 2 个线程中运行它们,因此包含 maxParallelForks = 2 。我想确保同一类的测试按顺序在同一线程中运行。如何实现这一目标? (我使用 SpringRunner。)

最佳答案

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

关于java - Gradle 与在同一线程中运行的同一类的方法并行运行测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47532534/

相关文章:

java - 在 GUI Java Swing 中从上到下调整按钮

android - 当我在Android Studio中运行一个简单的Hello World程序时,在图像中出现以下错误

jenkins - Hudson 支持的 JUnit XML 格式规范是什么?

java - JUnit 断言数组在不相等时是相等的

android - 构建我的Flutter应用程序时,GradleExeption失败

java - "Test Artifact"选择器在Android STudio中做什么

java - 如何将文件从SpringBoot项目资源内的子文件夹复制到资源内的另一个子文件夹

java - 如何使用 java 中的日期 API 验证年份

java - HttpURLConnection getInputStream() 有一秒延迟

android - 无法在 Android Studio 中升级 gradle 版本