Выбор ответа Junior Тесты, бенчмарки и модули спрашивают часто обновлено

Табличные тесты в Go

Вопрос

Зачем в табличных тестах оборачивать каждый случай в t.Run(tt.name, ...)?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Каждый случай становится подтестом: имя, -run, свой Fatal. Подтесты дают изоляцию и адресность: go test -run "TestParse/пустаястрока", понятное имя в выводе, свой Cleanup и параллельность.

Варианты ответа

  1. Без t.Run случаи из таблицы вообще не запустятся
  2. Каждый случай становится подтестом: имя, -run, свой Fatalправильный ответ
  3. t.Run ускоряет тесты в несколько раз за счёт параллельности
  4. t.Run автоматически генерирует тестовые данные для таблицы

Разбор

Подтесты дают изоляцию и адресность: go test -run "TestParse/пустая_строка", понятное имя в выводе, свой Cleanup и параллельность. Без t.Run цикл тоже работает, но первый Fatal прервёт весь тест, и в отчёте не видно, какой случай упал. Ускорения или генерации данных t.Run сам по себе не даёт.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.