首頁 >後端開發 >Golang >如何在 Go 單元測試中有效測試命令列參數?

如何在 Go 單元測試中有效測試命令列參數?

Barbara Streisand
Barbara Streisand原創
2024-12-20 00:46:09726瀏覽

How Can I Effectively Test Command-Line Arguments in Go Unit Tests?

在Go 單元測試中測試命令列參數

在您的問題中,您提到了在Go 單元中使用命令列標誌的問題測試。您有一個模組化應用程序,其中的測試使用不同的應用程式模組集,其中一些模組是透過命令列標誌進行調整的。但是,當您使用自訂命令列標誌執行測試時,您會收到一條錯誤,指出該標誌未定義。

根本問題是測試可執行檔應用所有命令列參數,除非其中一個或其中更多的內容被忽略。在您的情況下,您有多個測試,其中一些使用自訂標誌,而其他則不使用。

要解決此問題,您有兩個選擇:

  • 分別為每個_test.go 檔案執行go test: 分別為每個測試傳遞適當的參數集。例如:
go test -test.v ./testfile1_test.go -gamedir.custom=c:/resources
go test -test.v ./testfile2_test.go
  • 忽略測試中未使用的標誌:修改您的測試文件以忽略未使用的標誌。例如,在不使用-gamedir.custom 標誌的測試中,可以添加以下程式碼:
var customPath string
func init() {
    flag.StringVar(&customPath, "gamedir.custom", "", "Custom game resources directory")
}
func TestFunc(t *testing.T) {
    if testing.Short() {
        return
    }
    t.Skip("Skipping this test as it uses `-gamedir.custom` flag")
}

testing.Short() 檢查用於確定測試是否在短模式下運行,這通常是同時執行所有測試時的情況。如果測試在短模式下運行,它將被跳過。否則,測試將被跳過,因為 -gamedir.custom 標誌未被使用。

以上是如何在 Go 單元測試中有效測試命令列參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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