1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go開発入門 テーブル駆動テストと並列実行

Last updated at Posted at 2022-03-24

はじめに

テーブル駆動テストとは、
インプットとアウトプットのテーブルについて
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の記事の初投稿です。
間違いありましたらご教授いただけると幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?