使用模組化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中文網其他相關文章!