shell
go test
のように実行すると、
そのディレクトリにあるテストファイルがすべて読み込まれて実行される。
テストを書きながら実装しているときは、
特定のテストのみを走らせたい。
go test -run
あたりでできそうだったが、うまく行かなかったので、
以下のようなスクリプトを書いた。
run_test.sh
# !/bin/bash
SRC=$(go list -f '{{range .GoFiles}}{{.}} {{end}}')
TESTS=$(go list -f '{{range .TestGoFiles}}{{.}} {{end}}')
if [ $# -gt 0 ]; then
TESTS=$1
fi
go test $SRC $TESTS
特定のテストファイルを指定して実行する。
shell
./run_test.sh hogehoge_test.go
指定がなければ、すべてのテストが実行される。
go list -f '{{range .GoFiles}}{{.}} {{end}}'
などで、
Goファイル一覧が取得できるので、これを利用している。
※追記
-run
オプションの意味がわかった。
実行する関数を絞り込めるようだ。
shell
go test -run Hogehoge
を実行すると、Hogehoge
という文字列が含まれている関数(例えばTestHogehoge(t *testing.T)
)のみが実行されるようだ。便利。