Skip to content
2 / 15

Табличные тесты и подтесты: t.Run и именование случаев

Табличный тест — идиома Go: список случаев в виде среза структур и один цикл, прогоняющий их через t.Run. Выигрыш не в краткости, а в трёх практических вещах. Диагностика: каждый случай становится отдельным подтестом с собственным именем, поэтому в выводе видно, какой именно упал, и его можно запустить точечно через -run 'TestX/имя_случая'. Расширяемость: новый случай — одна строка, а не копия функции. Единообразие: все случаи проходят одну и ту же проверку, и невозможно случайно проверить в одном месте больше, чем в другом. Имя случая стоит делать человекочитаемым: пробелы в имени подтеста заменяются на подчёркивания, поэтому «пустой ввод» превращается в пустой_ввод и остаётся понятным. Для параллельного прогона добавляют t.Parallel() внутри подтеста — начиная с Go 1.22 переменная цикла своя на каждой итерации, поэтому копия tc := tc больше не нужна.

Табличные тесты и подтесты: t.Run и именование случаев | JScriptiser