Skip to content
3 / 15

t.Helper, t.Cleanup и TestMain: подготовка и уборка

Три механизма делают тесты читаемыми и не оставляющими мусора. t.Helper() помечает функцию вспомогательной: при провале в сообщении будет указана строка вызова, а не строка внутри помощника, — без этого все ошибки указывают в одно и то же место, и найти виноватый тест невозможно. t.Cleanup(f) регистрирует уборку: функции выполняются в обратном порядке при завершении теста, включая провал и панику, — это defer для тестов, работающий и из вспомогательных функций, чего defer не умеет. TestMain позволяет выполнить код до и после всех тестов пакета: поднять контейнер с базой, применить миграции, а потом убрать; обязательное правило — вызвать m.Run() и завершиться через os.Exit с его кодом. Важная тонкость: os.Exit не выполняет отложенные вызовы, поэтому уборку в TestMain делают до него явно.

t.Helper, t.Cleanup и TestMain: подготовка и уборка | JScriptiser