🔴 Сложный · 3 очк. Тестирование
Что произойдёт, если определить func TestMain(m *testing.M), но не вызвать m.Run()?
A Тесты запустятся как обычно
B Ни один тест не выполнится
C Ошибка компиляции
D panic
Объяснение вопроса

Если определён TestMain, go test вызывает его вместо прямого запуска тестов. Без вызова m.Run() ни один Test* не выполнится.

Правильный паттерн

func TestMain(m *testing.M) {
    setup()
    code := m.Run()
    teardown()
    os.Exit(code)
}

m.Run() запускает все тесты пакета и возвращает код выхода. Его нужно передать в os.Exit.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.