Основы синтаксиса Строки и руны Массивы и слайсы Map Структуры и методы Интерфейсы Горутины и конкурентность Каналы defer, panic, recover Обработка ошибок Указатели Пакет sync Тестирование Пакеты и модули Стандартная библиотека Context Generics iota и перечисления Разное / продвинутое

Тестирование

6 вопросов

Встроенная система тестирования Go: пакет testing, файлы _test.go, бенчмарки, параллельные тесты. Всё работает из коробки без внешних фреймворков.

1 Какой пакет используется для тестирования в Go? 🟢 Лёгкий
Ответ: B) testing

Пакет testing - стандартный для юнит-тестов, бенчмарков и примеров. Запуск: go test. Go не использует внешние фреймворки - всё встроено в стандартную библиотеку.

Подробнее →
2 Как должна начинаться тестовая функция? 🟢 Лёгкий
Ответ: B) Test*(t *testing.T)

Тестовые функции начинаются с Test, принимают *testing.T. Пример: func TestAdd(t *testing.T). Бенчмарки начинаются с Benchmark, фаззинг - с Fuzz.

Подробнее →
3 Какое расширение у файлов с тестами? 🟢 Лёгкий
Ответ: B) _test.go

Файлы *_test.go исключаются из обычной сборки и компилируются только при go test. Это позволяет держать тесты рядом с кодом без увеличения размера бинарника.

Подробнее →
4 Что делает t.Parallel()? 🟡 Средний
Ответ: B) Разрешает параллельное выполнение теста

t.Parallel() в начале теста разрешает запускать его параллельно с другими «параллельными» тестами. По умолчанию тесты выполняются последовательно. Полезно для ускорения.

Подробнее →
5 Что такое benchmark в Go? 🟡 Средний
Ответ: B) Тест производительности (Benchmark*)

Бенчмарки измеряют производительность. func BenchmarkX(b *testing.B) { for i := 0; i < b.N; i++ { ... } }. Запуск: go test -bench=. Go автоматически подбирает b.N.

Подробнее →
6 Как запустить только один конкретный тест? 🟡 Средний
Ответ: B) go test -run=X

Флаг -run принимает регулярное выражение. go test -run=TestAdd запустит только тесты, чьё имя совпадает с паттерном. Можно уточнять подтесты: -run=TestAdd/negative.

Подробнее →