Ответ
В Go тесты пишутся с использованием пакета testing. Тестовые файлы должны заканчиваться на _test.go. Тестовая функция начинается с Test и принимает *testing.T:
func TestSum(t *testing.T) {
got := Sum(2, 3)
want := 5
if got != want {
t.Errorf("got %d, want %d", got, want)
}
}
Для табличных тестов используйте циклы:
func TestSumTable(t *testing.T) {
tests := []struct {
a, b, want int
}{
{1, 2, 3},
{0, 0, 0},
{-1, 1, 0},
}
for _, tt := range tests {
got := Sum(tt.a, tt.b)
if got != tt.want {
t.Errorf("Sum(%d, %d) = %d; want %d", tt.a, tt.b, got, tt.want)
}
}
}
Для бенчмарков используйте *testing.B:
func BenchmarkSum(b *testing.B) {
for i := 0; i < b.N; i++ {
Sum(1, 2)
}
}
Запуск тестов:
go test- запуск всех тестовgo test -v- с подробным выводомgo test -run TestName- запуск конкретного тестаgo test -bench .- запуск бенчмарков