Slide 31
Slide 31 text
Table Driven Test
func TestFizzBuzz(t *testing.T) {
tests := []struct {
name string
input int
want string
}{
{name: "Num", input: 2, want: "2"},
{name: "Multi3", input: 3, want: "Fizz"},
{name: "Multi5", input: 5, want: "Buzz"},
...
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := FizzBuzz(tt.input)
if got != tt.want {
t.Errorf("want %d, but %s:", tt.want, got)
}
}
}
● テストケースをテーブル化
● 再利用性が高い
● エンバグ時にデグレしにくい
○ テストケースを追加
○ リグレッションと同時に実装
● “tests”で回して”tt”で受ける
● T.Runでサブテストにする
03. How to write test