Goでテストを実行する時の備忘録
Goでテストを回すには
最近Goで実装するものがあった。そこでテストを回すときの自分メモ兼今日の素振りの成果
とりあえず下記公式のページでTestingの箇所を見れば大まかにわかる
How to Write Go Code - The Go Programming Language
公式ページではリモートリポジトリに対するテストもやっているが今回はローカルに対してのみ
例としては以下のようなパッケージ構成を想定する
fizzbuzz |-- fizzbuzz.go |-- fizzbuzz_test.go
またfizzbuzz_test.goの内容は以下のように想定
package fizzbuzz import( "testing" ) func TestFizz(t *testing.T){ ... } func TestBuzz(t *testing.T){ ... }
作成しているパッケージ内でまるっとテストを回すときは以下のようにする
> go test PASS ok fizzbuzz 123.456s
テストを1つずつ結果を見ながらすすめる
> go test -v === RUN TestFizz --- PASS: TestFizz (xxx.xx seconds) === RUN TestBuzz --- PASS: TestBuzz (xxx.xx seconds) PASS ok command-line-arguments xxx.xxxs
その他の実行方法
複数ファイルの場合
次の例として以下のように細かくファイルが分かれている場合
fizzbuzz |-- fizz.go |-- fizz_test.go |-- buzz.go |-- buzz_test.go
対象ファイルを指定して実行
> go test fizz.go fizz_test.go
自分がやってしまったミス
> go test fizz_test.go
上記の場合テストは以下のようにテストを実装する必要がある。ただしこのテストはどうなんだろう
package fizzbuzz import( "testing" "fizzbuzz" ) func TestFizz(t *testing.T) { fizzbuzz.Fizz() ... }
パッケージが階層でわかれている場合
fizzbuzz |--fizz | |-- fizz.go | |-- fizz_test.go |-- buzz.go |-- buzz_test.go
以下のようにすると再帰的にテストを実行する
> go test ./...