首頁 >後端開發 >Golang >如何在 Go 單元測試中處理自訂命令列標誌?

如何在 Go 單元測試中處理自訂命令列標誌?

Susan Sarandon
Susan Sarandon原創
2024-11-29 09:31:12614瀏覽

How to Handle Custom Command-Line Flags in Go Unit Tests?

在Go 單元測試中自訂命令列標誌

使用模組化Go 應用程式和利用特定應用程式模組的單元測試時,測試命令可能具有挑戰性-依賴使用者定義標誌的線路功能。

考慮以下內容範例:

func init() {
    flag.StringVar(&this.customPath, "gamedir.custom", "", "Custom game resources directory")
}

嘗試使用下列指令測試此功能時:

go test -test.v ./... -gamedir.custom=c:/resources

執行時傳回錯誤:

flag provided but not defined: -gamedir.custom

了解問題

出現錯誤是因為go test 指令同時執行各個測試。使用 -test.v 標誌時,會建立多個測試可執行文件,每個測試可執行檔都有自己的命令列標誌。如果特定測試未明確處理 -gamedir.custom 標誌,它將失敗並出現上述錯誤。

解決方案:在單獨測試中定義標誌

要解決此問題,請定義命令每個測試文件中的行標誌。這確保每個測試可執行檔都可以處理必要的標誌。

例如:

func TestMyModule(t *testing.T) {
    flag.StringVar(&this.customPath, "gamedir.custom", "", "Custom game resources directory")

    // Test code here...
}

透過在每個測試函數中定義標誌,我們確保所有測試可執行檔都定義了適當的標誌並且可以正常運作。

以上是如何在 Go 單元測試中處理自訂命令列標誌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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