在多個Go 模組的父目錄中運行go test
當使用包含多個go 模組的目錄結構時,例如:
<code class="pre">/root /one go.mod go.sum main.go main_test.go /two go.mod go.sum main.go main_test.go</code>
執行go 檢定。或從根目錄(/root)執行 go test ./... 可能會導致錯誤,表示未找到任何套件。這是因為 go test 期望在單一模組上運作。
要克服此限制,一種方法是使用 shell 技巧。例如,以下命令應遍歷子目錄並在每個子目錄中執行 go test ./...:
<code class="pre">find . -type d -name main_test.go -exec go test '{}/' \;</code>
或者,許多專案實現執行此操作的 Makefile 或測試腳本。例如,test.sh 腳本可以包含:
<code class="pre">for i in $(find . -type d -name main_test.go | sed 's|main_test.go||'); do cd $i go test ./... cd .. done</code>
此腳本將循環遍歷儲存庫,並變更至包含main_test.go 檔案的每個子目錄,執行go test ./...,然後回到父目錄。
較大的項目可能會維護所有模組的列表,例如由 go-cloud 項目維護的列表 (https://github.com/google/go-cloud/blob/主/所有模組)。腳本可以使用此列表來迭代模組並執行各種操作,包括運行測試。
以上是如何在具有多個 Go 模組的父目錄中執行'go test”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!