Что такое t.Cleanup? Чем лучше defer?

Ответ

t.Cleanup(fn) регистрирует функцию, которая выполнится после завершения теста (включая подтесты). Порядок выполнения - LIFO (как defer). Удобнее defer при использовании хелперов: хелпер может зарегистрировать очистку, не возвращая ресурс вызывающему. Рекомендуется вместо отдельного tearDown в табличных тестах.

func setup(t *testing.T) *DB {
    db := openDB(t)
    t.Cleanup(func() { db.Close() })
    return db
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.