Тесты в Go — файлы *_test.go с функциями TestXxx(t *testing.T):
// math_test.go
func TestAdd(t *testing.T) {
got := Add(2, 3)
if got != 5 {
t.Errorf("Add(2,3) = %d, want 5", got)
}
}
Запуск:
go test ./... # все тесты
go test ./pkg/user # конкретный пакет
go test -run TestAdd # по имени (regex)
go test -v # verbose
go test -count=1 # без кеша
go test -race # с детектором гонок
go test -cover # покрытие
go test -coverprofile=c.out && go tool cover -html=c.out
t.Helper() — помечает функцию как хелпер (ошибка покажет вызывающий код).
t.Parallel() — разрешает параллельный запуск.
t.Skip() — пропуск теста.