在Go 中測試os.Exit 場景
在Go 中,os.Exit 函數會終止目前程式的執行,這使得測試變得具有挑戰性涉及程序終止的場景。解決此問題的一種方法是利用單獨的進程和子進程檢查。
範例:
考慮以下函數:
func doomed() { os.Exit(1) }
為了測試這個函數,我們建立一個單獨的測試案例並在單獨的測試案例在用例中呼叫該函數
測試案例:
import ( "os" "os/exec" "testing" ) func TestDoomed(t *testing.T) { if os.Getenv("BE_DOOMED") == "1" { doomed() return } cmd := exec.Command(os.Args[0], "-test.run=TestDoomed") cmd.Env = append(os.Environ(), "BE_DOOMED=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) }
在此測試案例中:
這種方法允許我們在單獨的進程中隔離 os.Exit 調用,確保它不會影響其他測試。
以上是如何在 Go 中測試 os.Exit 場景?的詳細內容。更多資訊請關注PHP中文網其他相關文章!