Menguji senario os.Exit dalam Go
Apabila menguji fungsi Go yang menggunakan os.Exit(), pendekatan unik diperlukan untuk menghalang keluar ini daripada mengganggu ujian seterusnya.
Untuk menangani perkara ini, pertimbangkan kod berikut:
func doomed() { os.Exit(1) }
Cara Menguji os.Exit Gelagat Menggunakan Go Test
Untuk menguji tingkah laku keluar dari fungsi ini, kami boleh memanfaatkan teknik yang digariskan oleh Andrew Gerrand, ahli teras pasukan Go:
Contoh Kod Ujian:
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) }
Dengan memisahkan proses ujian dan menggunakan pembolehubah persekitaran untuk mengawal pelaksanaan, anda boleh menguji os.Keluar senario dengan berkesan dalam suite ujian Go anda tanpa menjejaskan ujian lain.
Atas ialah kandungan terperinci Bagaimana Anda Menguji Gelagat `os.Exit` dalam Go Test Suites?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!