gpt4 book ai didi

java - Junit5的TestReporter线程安全吗?

转载 作者:行者123 更新时间:2023-12-03 13:16:36 28 4
gpt4 key购买 nike

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

    @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();
}

最佳答案

TLDR :是

正确的答案当然是:这取决于。

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

这是“BUT”:JUnit 5平台允许第3方参与事件监听,例如在测试开始,测试结束或测试发布一些其他数据时生成自己的报告或执行其他操作。那些第三方的TestExecutionListener实现可以执行所需的操作,因此而不是可能是线程安全的。

关于java - Junit5的TestReporter线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62453916/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com