Go での os.Exit シナリオのテスト
Go では、os.Exit 関数が現在のプログラムの実行を終了するため、テストが困難になります。プログラムの終了を伴うシナリオ。この問題に対処する 1 つのアプローチは、個別のプロセスとサブプロセスのチェックを利用することです。
例:
次の関数を考えてみましょう:
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 中国語 Web サイトの他の関連記事を参照してください。