使用JUnit 5执行并行测试用例

时间:2018-05-29 13:56:43

标签: java junit junit5

是否可以执行与JUnit 5并行的测试用例?

我正在TestNG寻找threadPoolSizeinvocationCount之类的内容:

@Test(threadPoolSize = 3, invocationCount = 10,  timeOut = 10000)

3 个答案:

答案 0 :(得分:2)

您可以使用JUnit 5.3编写并行测试。 https://junit.org/junit5/docs/current/user-guide/#writing-tests-parallel-execution

@Execution(ExecutionMode.CONCURRENT)
class MyTest {

    @Test
    void test1() throws InterruptedException {
        Thread.sleep(1000);
        System.out.println("Test1 " + Thread.currentThread().getName());
    }

    @Test
    void test2() throws InterruptedException {
        Thread.sleep(1000);
        System.out.println("Test 2! " + Thread.currentThread().getName());
    }
}

// should run simultaneously 

请记住将junit.jupiter.execution.parallel.enabled=true添加到您的JUnit配置中

https://junit.org/junit5/docs/current/user-guide/#running-tests-config-params

如果需要fixed thread pool,请将其添加到JUnit配置中:

junit.jupiter.execution.parallel.config.strategy=fixed
junit.jupiter.execution.parallel.config.fixed.parallelism=4

答案 1 :(得分:1)

要进行后续操作-它现在可以作为JUnit 5.3的实验功能使用: https://junit.org/junit5/docs/snapshot/user-guide/index.html#writing-tests-parallel-execution

答案 2 :(得分:0)

在撰写本文时,并行测试执行是Junit5中的一项实验功能:

https://junit.org/junit5/docs/snapshot/user-guide/#writing-tests-parallel-execution

更新junit-platform.properties文件:

用于并行执行顶级类的配置参数,但 同一线程中的方法:

junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.mode.default = same_thread
junit.jupiter.execution.parallel.mode.classes.default = concurrent

用于依次执行顶级类的配置参数,但 他们的方法并行:

junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.mode.default = concurrent
junit.jupiter.execution.parallel.mode.classes.default = same_thread

默认执行模式应用于测试树的所有节点 除了一些值得注意的例外,即使用 Lifecycle.PER_CLASS模式或MethodOrderer(随机除外)。在 在前一种情况下,测试作者必须确保测试课程为 线程安全的;在后者中,并发执行可能与 配置的执行顺序。因此,在两种情况下, 只有当 测试类上存在@Execution(CONCURRENT)批注或 方法。