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

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とか他のコマンドでも使える。