我正在使用 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
添加回答
舉報
0/150
提交
取消