Go/goコマンド/test
表示
go testコマンドは、インポートパスで指定されたパッケージのテストを自動的に実行するためのGoコマンドのサブコマンドです。このコマンドは、*_test.goという命名規則を持つテストファイル内の関数をコンパイルし、実行します。
テストの実行と出力
[編集]go testは、各パッケージのテスト結果を以下の形式で要約して出力します。
ok archive/tar 0.011s FAIL archive/zip 0.022s ok compress/gzip 0.033s ...
- ok: テストが成功したことを示します。
- FAIL: テストが失敗したことを示し、失敗したパッケージの詳細な出力が表示されます。
テスト実行前に、go testは go vet を実行して、テストコードに潜在的な問題がないかチェックします。
実行モード
[編集]go testには、主に2つの実行モードがあります。
- ローカルディレクトリモード:
- パッケージの引数を指定せずに
go testと実行した場合にこのモードになります。 - カレントディレクトリにあるパッケージのソースとテストがコンパイルされ、テストが実行されます。
- テストが完了すると、
okまたはFAIL、パッケージ名、経過時間が表示されます。 - このモードではキャッシュ機能が無効です。
- パッケージの引数を指定せずに
- パッケージリストモード:
go test mathのように、明示的にパッケージ名を指定して実行した場合にこのモードになります。- コマンドラインで指定された各パッケージがコンパイルされ、テストが実行されます。
- テストが成功した場合は、最終的な
okの要約行のみが表示されます。失敗した場合は、完全なテスト出力が表示されます。 -benchや-vフラグを付けると、成功したテストでも完全な出力が表示されます。- 成功したパッケージのテスト結果はキャッシュされます。これにより、不必要な再テストを避けることができます。キャッシュされた結果は、経過時間の代わりに
(cached)と表示されます。
主なオプション
[編集]go testには、テストの実行方法を制御するための様々なフラグがあります。
-c: テストバイナリをコンパイルしますが、実行はしません。-v: 詳細な出力(verbose output)を有効にし、テストの実行内容を詳しく表示します。-json: テスト出力をJSON形式で出力します。自動処理に適しています。-args: このフラグ以降の引数を、テストバイナリにそのまま渡します。-vet=off: テスト実行前のgo vetによるチェックを無効にします。-count=1: テストキャッシュを明示的に無効にする慣用的な方法です。