我可以同时运行@TestFactory生成的Junit动态测试吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以同时运行@TestFactory生成的Junit动态测试吗?相关的知识,希望对你有一定的参考价值。

我正在使用Junit的Discovering Tests功能,我也有一个类介绍了一些@TestFactory方法,每个方法都会产生大量的动态测试。我的第一个想法是“能够同时运行它们会很棒。”所以我补充道

.configurationParameter(
               "junit.jupiter.execution.parallel.enabled", "true"
           )

我的LauncherDiscoveryRequestBuilder和我注释我的测试班用@Execution(ExecutionMode.CONCURRENT)控制工厂。到目前为止一切都那么好,但我最终得到了每个@TestFactory方法在不同的线程上运行,但是由单个@TestFactory生成的所有动态测试共享相同的线程(生成这些测试的@TestFactory运行的线程)。

我的问题是 - 我可以并行运行@TestFactory生成的动态测试吗?也尝试了这个

@TestFactory
@Execution(ExecutionMode.CONCURRENT)

但结果是一样的。

答案

是的,您可以同时执行动态测试。

这是来自JUnit 5用户指南的dynamicNodeSingleContainer()测试工厂的修改版本

@TestFactory
@Execution(ExecutionMode.CONCURRENT)
DynamicNode dynamicNodeSingleContainer() 
    return dynamicContainer("palindromes",
        Stream.of("racecar", "radar", "mom", "dad")
            .map(text -> dynamicTest(text, () -> 
                assertTrue(isPalindrome(text));
                System.err.println(Thread.currentThread().getName());
            )
    ));

当我执行它时,我看到以下输出,它表明4个动态测试在不同的线程中同时执行。

ForkJoinPool-1-worker-5
ForkJoinPool-1-worker-11
ForkJoinPool-1-worker-7
ForkJoinPool-1-worker-9

以上是关于我可以同时运行@TestFactory生成的Junit动态测试吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在@TestFactory 的每个测试中创建不同的 Spring 上下文?

swift 由Xgist(https://github.com/Bunn/Xgist)于06. Jun.2017,13:13:38生成

1 Jun 18 DOM (JS)

如何生成Oracle AWR报告

APNS PHP 推送通知问题

如何在 SQL 中为不同月份运行不同的日期范围