Open3
Go Test
testing
パッケージのメソッド
t.Skip
テストの実行をスキップする
func TestRun(t *testing.T) {
t.Skip("リファクタリング中")
// 以下の処理がスキップされる
// ...
}
t.Fatal
, t.Fatalf
t.Error
, t.Errorf
t.Log
, t.Logf
t.Setenv
wantPort := 3333
t.Setenv("PORT", fmt.Sprint(wantPort))
t.Cleanup
t.Cleanup(func() { _ = resp.Body.Close() })
テスト時、defer だと並列で動くサブテストの終了を待たずに実行されてしまうため t.Cleanup
を使用する
テストのポイント
_test.go
で終わるようにする
① ファイル名の末尾は ❯ tree
.
├── Makefile
├── config
│ ├── config.go
│ └── config_test.go
├── go.mod
├── go.sum
├── main.go
└── main_test.go
② パッケージ名はそのフォルダに入っているファイルと同じもの
config.go
package config
config_test.go
package config
Test
から始まる名前にする、引数は *testing.T
③ 関数名は func TestNew(t *testing.T) {
// ...
}
t.Error()
や t.Errorf
を使用し、テストが失敗であることを知らせる
④t.Errorf("cannot create config: %v", err)
実行コマンド
現在のパッケージをテスト
go test
現在のパッケージ以下のすべてのテストを実行
go test ./...
特定のパッケージに関しテストを実行
go test ./config
テスト関数を指定して実行
go test -run TestFoo ./...
キャッシュなしで実行
go test -count=1 ./...
go clean -testcache
とキャッシュを消してもいい