Testen von os.Exit-Szenarien in Go
Beim Testen von Go-Funktionen, die os.Exit() aufrufen, ist ein einzigartiger Ansatz erforderlich, um dies zu verhindern diese Exits stören nachfolgende Tests nicht.
Um dieses Problem zu beheben, berücksichtigen Sie den folgenden Code:
func doomed() { os.Exit(1) }
So testen Sie das os.Exit-Verhalten ordnungsgemäß mit Go Test
Um das Exit-Verhalten dieser Funktion zu testen, können wir eine von Andrew Gerrand, einem Kernmitglied des Go-Teams, beschriebene Technik nutzen:
Beispieltestcode:
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) }
Durch die Trennung von Testprozessen und Mithilfe von Umgebungsvariablen zur Steuerung der Ausführung können Sie os.Exit-Szenarien in Ihren Go-Testsuiten effektiv testen, ohne andere Tests zu beeinträchtigen.
Das obige ist der detaillierte Inhalt vonWie testen Sie das „os.Exit'-Verhalten in Go-Testsuiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!