Menguji os.Exit Senario dalam Go
In Go, fungsi os.Exit menamatkan pelaksanaan program semasa, menjadikannya mencabar untuk diuji senario yang melibatkan penamatan program. Satu pendekatan untuk menangani isu ini ialah menggunakan proses dan semakan subproses yang berasingan.
Contoh:
Pertimbangkan fungsi berikut:
func doomed() { os.Exit(1) }
Untuk menguji fungsi ini, kami mencipta kes ujian yang berasingan dan memanggil fungsi secara berasingan proses.
Kes Ujian:
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) }
Dalam kes ujian ini:
Pendekatan ini membolehkan kami mengasingkan os.Keluar panggilan dalam proses yang berasingan, memastikan ia tidak menjejaskan ujian lain.
Atas ialah kandungan terperinci Bagaimana untuk Menguji Senario os.Exit dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!