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
を使えばいいことがわかった。