在Go 中測試os.Exit 場景
在測試呼叫os.Exit() 的Go 函數時,需要一個獨特的函數時,需要一個獨特的方法來防止這些退出會幹擾後續測試。
要解決這個問題,請考慮以下措施代碼:
func doomed() { os.Exit(1) }
如何使用Go Test 正確測試os.Exit 行為
要測試os.Exit 行為
一旦子程序退出,請驗證原始測試中的退出代碼過程。如果符合預期值(例如 1),則測試成功。
package main import ( "fmt" "os" "os/exec" "testing" ) func Crasher() { fmt.Println("Going down in flames!") os.Exit(1) } func TestCrasher(t *testing.T) { if os.Getenv("BE_CRASHER") == "1" { Crasher() return } cmd := exec.Command(os.Args[0], "-test.run=TestCrasher") cmd.Env = append(os.Environ(), "BE_CRASHER=1") err := cmd.Run() if e, ok := err.(*exec.ExitError); ok && !e.Success() { return } t.Fatalf("process ran with err %v, want exit status 1", err) }範例測試程式碼:透過分離測試過程和使用環境變數來控制執行,您可以在Go 測試套件中有效地測試os.Exit 場景,而不會影響其他測試。
以上是如何在 Go 測試套件中測試「os.Exit」行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!