39 Практика
Как писать тест?
Ответ
Тест лежит в файле *_test.go того же пакета. Функция называется TestXxx и принимает *testing.T. Падение — это t.Fatalf или t.Errorf. Запуск из каталога модуля: go test ./....
Подробнее
Таблица случаев в срезе структур держит вход и ожидание рядом. Имя подтеста через t.Run видно в выводе, когда упала одна строка таблицы.
Тест в пакете calc видит неэкспортированные имена. Тест в пакете calc_test проверяет пакет так, как его видит чужой код: только через экспортированное API.
package calc
import "testing"
func Add(a, b int) int { return a + b }
func TestAdd(t *testing.T) {
tests := []struct {
a, b int
want int
}{
{a: 1, b: 2, want: 3},
{a: -1, b: 1, want: 0},
}
for _, tt := range tests {
if got := Add(tt.a, tt.b); got != tt.want {
t.Fatalf("Add(%d, %d) = %d, хотим %d", tt.a, tt.b, got, tt.want)
}
}
}