Go開発入門 テーブル駆動テストと並列実行
はじめに
テーブル駆動テストとは、
インプットとアウトプットのテーブルについて
1行ずつテストを繰り返すことです。
テーブル駆動テストには、下記のようなメリットがあります。
- 並列にテストが実行しやすい
- テストケースの変更が容易
- テストが読みやすい
- テストがどこで失敗したのかがわかりやすい
本記事では、サンプルとして偶数判定のテーブル駆動テストを並列で実行することを体験します。
サンプルでは、go modを使用しています。
関数を作成
./is_even.go
package is_even
func IsEven(number int) bool {
return (number % 2 == 0);
}
テストを作成
./is_even_test.go
// go test github.com/CobaltSato/mock/unit_test/is_even -parallel 2
package is_even_test
import (
"testing"
"github.com/CobaltSato/mock/unit_test/is_even"
)
func TestIsEven(t *testing.T) {
t.Parallel()
// テストケース
cases := map[string]struct {
in int
want bool
}{
"+odd": {5, false},
"+even": {6, true},
"-odd": {-5, false},
"-even": {-6, true},
"zero": {0, true},
}
for name, tt := range cases {
tt := tt // ローカル変数にコピー
t.Run(name, func(t *testing.T) { // サブテストとして実行
t.Parallel() // 並列実行
if got := is_even.IsEven(tt.in); tt.want != got {
t.Errorf("want IsEven(%d) = %v, got %v", tt.in, tt.want, got)
}
})
}
}
テストを実行
go test . -parallel 2
おわりに
Goの記事の初投稿です。
間違いありましたらご教授いただけると幸いです。
Author And Source
この問題について(Go開発入門 テーブル駆動テストと並列実行), 我々は、より多くの情報をここで見つけました https://qiita.com/kobaruto_sato/items/90dac34ae654bebe000c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .