6 вопросов
Встроенная система тестирования Go: пакет testing, файлы _test.go, бенчмарки, параллельные тесты. Всё работает из коробки без внешних фреймворков.
Пакет testing - стандартный для юнит-тестов, бенчмарков и примеров. Запуск: go test. Go не использует внешние фреймворки - всё встроено в стандартную библиотеку.
Подробнее →Тестовые функции начинаются с Test, принимают *testing.T. Пример: func TestAdd(t *testing.T). Бенчмарки начинаются с Benchmark, фаззинг - с Fuzz.
Подробнее →Файлы *_test.go исключаются из обычной сборки и компилируются только при go test. Это позволяет держать тесты рядом с кодом без увеличения размера бинарника.
Подробнее →t.Parallel()? 🟡 Средний
▶
t.Parallel() в начале теста разрешает запускать его параллельно с другими «параллельными» тестами. По умолчанию тесты выполняются последовательно. Полезно для ускорения.
Подробнее →Бенчмарки измеряют производительность. func BenchmarkX(b *testing.B) { for i := 0; i < b.N; i++ { ... } }. Запуск: go test -bench=. Go автоматически подбирает b.N.
Подробнее →Флаг -run принимает регулярное выражение. go test -run=TestAdd запустит только тесты, чьё имя совпадает с паттерном. Можно уточнять подтесты: -run=TestAdd/negative.
Подробнее →