結構ハマったのでメモ。
Goのテストはパッケージ単位で実行される。
glideを使っている場合、glide novendorでプロジェクト内のvendorディレクトリ以外のパッケージ一覧を返してくれるので
$ go test $(glide novendor)
とすることで、自分が作ったパッケージを全てテストに流すことができる。
ただ、このテストはデフォルトではCPUの数だけパッケージ単位でパラレルで実行される。
自分はテスト内でDBを使用し、データを消したりしていたためたまにテストが失敗するようになってしまった。
シリアルに実行するためには-pオプションを使う
-p n
the number of programs, such as build commands or
test binaries, that can be run in parallel.
The default is the number of CPUs available.
$ go test -p=1 $(glide novendor)
-parallelというオプションがあるが、これはテスト内でt.Parallel関数を使って並列化する時に使うらしい。