首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Junit5 5的TestReporter线程安全吗?

Junit5 5的TestReporter线程安全吗?
EN

Stack Overflow用户
提问于 2020-06-18 15:43:31
回答 1查看 122关注 0票数 1

下面的代码是否很好,其中两个线程可能同时修改TestReporter实例?

代码语言:javascript
复制
    @Test
    public void someTest(TestReporter testReporter) {
        // do some stuff
        CompletableFuture.allOf(
                CompletableFuture.runAsync(() -> {
                    // do task A
                    testReporter.publishEntry("taskA", "valueA");
                }),
                CompletableFuture.runAsync(() -> {
                    // do task B
                    testReporter.publishEntry("taskB", "valueB");
                })
        ).join();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 10:20:33

TLDR:是

正确的答案当然是:视情况而定。

JUnit 5被设计为允许并行测试执行。报告测试结果的整个机制(以及发布报告条目)都是通过事件传播完成的,既不共享可变状态,也不对底层ReportEntry的事件或实例进行同步。由于没有棘手的bug,因此testReporter.publishEntry(..)应该是线程安全的。

下面是“但是”:JUnit 5平台允许第三方连接到事件侦听中,例如在测试开始、测试结束或测试发布额外数据时生成自己的报告或做其他事情。那些第三方TestExecutionListener实现可以做他们想做的事情,而且他们可能而不是是线程安全的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62453916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档