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

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

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

对我LauncherDiscoveryRequestBuilder和我用@Execution(ExecutionMode.CONCURRENT). 到目前为止一切都很好,但我最终使每种@TestFactory方法都在不同的线程上运行,但是单个生成的所有动态测试@TestFactory共享同一个线程(@TestFactory生成这些测试的线程运行)。

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

@TestFactor
@Execution(ExecutionMode.CONCURRENT)

但结果是一样的。


小怪兽爱吃肉
浏览 99回答 1
1回答

繁星点点滴滴

是的,您可以同时执行动态测试。dynamicNodeSingleContainer()这是 JUnit 5 用户指南中测试工厂的修改版本@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-5ForkJoinPool-1-worker-11ForkJoinPool-1-worker-7ForkJoinPool-1-worker-9
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java