Goのテストを書いてみる

Go

足し算と引き算をする関数

package math

func Add(a, b int) int {
	return a + b
}

func Sub(a, b int) int {
	return a - b
}

テストコード

1つずつの条件でも書けるし、テーブルドリブンテストで複数条件を構造体に定義して、ループで回すことでテストを分かりやすく書くことができる。

package math_test

import (
	"testing"

	"example/math"
)

func TestAdd(t *testing.T) {
	want := 3
	if got := Add(1, 2); got != 3 {
		t.Errorf("want %d but got %d", want, got)
	}
}

func TestSub(t *testing.T) {
	// テーブルドリブンテスト
	tests := []struct {
		name string
		a    int
		b    int
		want int
	}{
		{name: "1-2", a: 1, b: 2, want: -1},
		{name: "2-1", a: 2, b: 1, want: 1},
		{name: "3-3", a: 3, b: 3, want: 0},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := Sub(tt.a, tt.b); got != tt.want {
				t.Errorf("want %d but got %d", tt.want, got)
			}
		})
	}
}