如何順序跨多個Go 套件執行測試
使用go test ./... 對多個套件執行測試時,這一點很重要考慮並行化方面。預設情況下,測試是跨包同時運行的。但是,某些場景(例如基於資料庫的測試)需要依序執行。
在提供的範例中,由於並行測試執行而出現資料庫爭用。每個測試檔案都定義了全域資料庫變量,這在測試同時運行時可能會導致衝突。
解決方案:
要強制跨包順序執行,請使用未記錄的-p 標誌以及go test 如下:
go test -p 1 ./...
-p 1 標誌串列建置和測試所有包,解決爭用問題。
替代解決方案(使用 Shell 腳本) :
如果使用 -p 1 標誌不可行,可以採用基於 shell 腳本的替代方法。這是一個 Bash 腳本範例:
find . -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test
此腳本列出包含 .go 檔案的所有子目錄,刪除重複項,並按順序在每個子目錄上執行 go test。
以上是如何跨多個包順序執行Go測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!