メインコンテンツまでスキップ

go test する時にサブディレクトリ込みでテストをまとめて実行する方法

Sato Taichi

go でテストを実行する時に、複数のディレクトリを再帰的にまとめてテストしたい場合には、... をワイルドカードとして使える。

例えば、こんな風になる。

go test github.com/taichi/myproject/...

とかすると、

  • GOPATH/src/github.com/taichi/myproject/
  • GOPATH/src/github.com/taichi/myproject/subdir1
  • GOPATH/src/github.com/taichi/myproject/component

の中にあるテストコードが全部実行される。

Ginkgo使ってるなら、

ginkgo -r

でサブディレクトリの中身を再帰的に実行してくれる。とは言えアダプタコードを減らせる訳では無い。

ちなみに、面倒だからと言って

go test ...

とかしない事。GOROOT と GOPATH から解釈可能な名前空間を凄い勢いでトラバースしてテストを動かすので終わらなくなる。

というか、終わらなくなりかけた。CTRL+C で止めたけども。

Description of package lists によると、これは go コマンドにおける汎用的な仕様であるので、きっとgo fmtとか他のコマンドでも使える。