ErrorとFatalの使い方

testingパッケージの使い方を時間をとって調べたことがなかったので、あらためてちゃんと調べてみる。testingパッケージの中にもいろいろあるけど特にtesting.T型について調べてみた。

Godocを読んでみると、あることがわかった。

  • Error/Errorf: FailしてからLog/Logfする
  • Fatal/Fatalf: FailNowしてからLog/Logfする

なので、FailFailNowLogがわかっていれば基本的なことを理解できそう。

  • Failは実行中の関数を失敗とマークするけど、停止させずに継続する。
  • FailNowは実行中の関数を失敗とマークして、runtime.Goexit関数で停止させる。ちなみに、runtime.Goexitos.Exitと違ってdefer関数を呼び出してから現在のgoroutineを終了させる。
  • Logはテストが失敗したときだけテキストを出力する。

ということで、テストが失敗して即座に終了したい場合(エラーが出たときなど)はFatal、テストが失敗したけど後続するテストも行いたい場合はErrorを使えばいいことがわかった。