2 回答

TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊
如何執(zhí)行此操作:
func TestParallelSubtest(t *testing.T) {
? ? // setup test variables
? ? fname := setup(t)
? ? t.Run("group", func(t *testing.T) {
? ? ? ? for i := 0; i < ncase; i++ {
? ? ? ? ? ? t.Run(fmt.Sprintf("test_%d", i), func(t *testing.T) {
? ? ? ? ? ? ? ? t.Parallel()
? ? ? ? ? ? ? ? if _, err := os.Stat(fname); os.IsNotExist(err) {
? ? ? ? ? ? ? ? ? ? t.Fatalf("file was removed before subtest finished")
? ? ? ? ? ? ? ? }
? ? ? ? ? ? })
? ? ? ? }
? ? })
? ??
? ? os.Remove(fname)
}
博客文章的相關(guān)部分位于Control of Parallelism:
每個測試都與一個測試函數(shù)相關(guān)聯(lián)。如果一個測試的測試函數(shù)在其testing.T. 并行測試永遠(yuǎn)不會與順序測試同時運(yùn)行,并且它的執(zhí)行會暫停,直到它的調(diào)用測試函數(shù)(父測試的調(diào)用函數(shù))返回為止。[...]
一個測試會阻塞,直到它的測試函數(shù)返回并且它的所有子測試都已經(jīng)完成。這意味著由順序測試運(yùn)行的并行測試將在運(yùn)行任何其他連續(xù)順序測試之前完成。
您的問題的具體解決方案可以在參考資料部分找到Cleaning up after a group of parallel tests。

TA貢獻(xiàn)1866條經(jīng)驗 獲得超5個贊
從 Go 1.14 開始,testing.T
有了允許注冊拆卸回調(diào)的方法testing.B
。Cleanup
t.Cleanup(func()?{ ????os.Remove(fname) })
- 2 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報