Go での os.Exit シナリオのテスト
os.Exit() を呼び出す Go 関数をテストする場合、これを防ぐために独自のアプローチが必要です。これらは、後続のテストへの干渉を防ぎます。
これに対処するには、次の点を考慮してください。コード:
func doomed() { os.Exit(1) }
Go Test を使用して os.Exit 動作を適切にテストする方法
この関数の終了動作をテストするには、次で概説されている手法を利用できます。アンドリュー・ジェランド氏、Goの中心メンバーチーム:
テスト コード例:
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 中国語 Web サイトの他の関連記事を参照してください。