ErrorとFatalの使い方
testingパッケージの使い方を時間をとって調べたことがなかったので、あらためてちゃんと調べてみる。testingパッケージの中にもいろいろあるけど特にtesting.T型について調べてみた。
Godocを読んでみると、あることがわかった。
-
Error/Errorf:FailしてからLog/Logfする -
Fatal/Fatalf:FailNowしてからLog/Logfする
なので、FailとFailNowとLogがわかっていれば基本的なことを理解できそう。
-
Failは実行中の関数を失敗とマークするけど、停止させずに継続する。 -
FailNowは実行中の関数を失敗とマークして、runtime.Goexit関数で停止させる。ちなみに、runtime.Goexitはos.Exitと違ってdefer関数を呼び出してから現在のgoroutineを終了させる。 -
Logはテストが失敗したときだけテキストを出力する。
ということで、テストが失敗して即座に終了したい場合(エラーが出たときなど)はFatal、テストが失敗したけど後続するテストも行いたい場合はErrorを使えばいいことがわかった。