首頁 >後端開發 >Golang >如何跨多個包順序執行Go測試?

如何跨多個包順序執行Go測試?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 07:59:30221瀏覽

How to Execute Go Tests Sequentially across Multiple Packages?

如何順序跨多個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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn