April 2022
Beginner to intermediate
464 pages
6h 44m
Japanese
テストを実行する際に、共通する処理を行うヘルパー関数を準備するのは一般的な手法です。ヘルパー関数内が t *testing.T の引数を取る場合は、 t.Helper() を呼ぶようにすると、テスト失敗時にノイズとなるようなヘルパー関数の情報が減り、メッセージがわかりやすくなります。もう1つの注意点は、テスト用のヘルパー関数をプロダクションコード(プロダクトとして実際に動作するコード)のビルドに含ませないように気をつけることです。テスト用のヘルパー関数は以下の2つの方法のいずれかで提供させます。
ファイルの末尾が _test.go であればビルドからは除外されるため、この特性を利用した手法です。もっともシンプルで一般的ですが、テストコードは他のパッケージからimportできないため、複数パッケージを横断したヘルパー関数の扱いには適しません。ファイル名は helper_test.go や パッケージ名_helper_test.go などがよく使われます。
testutil や testonly といった名称でテストコードとは別パッケージを作成し、 _test.go が末尾に付かない通常のGoファイルでヘルパー関数を定義します。この時、テストコードからしかimportしなければ、プロダクションコードのビルドには含まれないため問題にはなりません。この方法だと複数のパッケージにまたがる共通的なヘルパー関数を扱うことができます。あるパッケージの機能をモックするようなヘルパーの場合は、 パッケージ名test といった名称も良く見かけます。 ...
Read now
Unlock full access