为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小怪兽爱吃肉 2022-10-12 10:54:51
我正在使用 Junit 的Discovering Tests功能,并且我还有一个类,它介绍了一些@TestFactory方法,每种方法都会产生大量的动态测试。我的第一个想法是“能够同时运行这些会很棒。”,所以我补充说.configurationParameter(                "junit.jupiter.execution.parallel.enabled", "true"            )对我LauncherDiscoveryRequestBuilder和我用@Execution(ExecutionMode.CONCURRENT). 到目前为止一切都很好,但我最终使每种@TestFactory方法都在不同的线程上运行,但是单个生成的所有动态测试@TestFactory共享同一个线程(@TestFactory生成这些测试的线程运行)。我的问题是 - 我可以并行运行 @TestFactory 生成的动态测试吗?也试过这个@TestFactor @Execution(ExecutionMode.CONCURRENT)但结果是一样的。
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

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


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-5

ForkJoinPool-1-worker-11

ForkJoinPool-1-worker-7

ForkJoinPool-1-worker-9


查看完整回答
反对 回复 2022-10-12
  • 1 回答
  • 0 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信