首頁 >後端開發 >Golang >如何在具有多個 Go 模組的父目錄中執行'go test”?

如何在具有多個 Go 模組的父目錄中執行'go test”?

Patricia Arquette
Patricia Arquette原創
2024-11-02 21:51:30946瀏覽

How to Run `go test` in a Parent Directory with Multiple Go Modules?

在多個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中文網其他相關文章!

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