TGViewer
Организованное программирование | Кирилл Мокевнин Организованное программирование | Кирилл Мокевнин @orgprog · 14.3K subscribers
Post #37 7K
Что не так с юнит-тестами


Помните мой недавний пост про изменении концепции тестирования на trophy? Там мы видим что количество юнит-тестов сведено к минимуму, что идет в разрез с общепринятым “пишем в первую очередь юниты”. И в этом посте я хочу рассказать про проблемы юнитов, которые существовали всегда и многие опытные разработчики на это не раз натыкались.

Часто говорят, что юниты помогают рефакторить код. Я же скажу, что именно юниты мешают его рефакторить. Полезный рефакторинг, как правило это не изменение того как написан, например, конкретный цикл, это переработка абстракций, выделение слоев, перемещение кода, перераспределение кода между функциями и методами. Что происходит с юнитами в таком случае? Правильно, они становятся полностью бесполезными, так как их придется переписывать. В моей практике была ситуация, когда 35 000 строк кода юнит тестов просто выкинули, так как в проекте делался важный рефакторинг и команда поняла что просто не потянет апгрейд тестов (по факту написание их с нуля).

Но и это еще не все, наличие большого числа таких юнитов заранее пугает разработчиков, так как они понимают что рефакторинг заставит их все переписывать, что убивает любую мотивацию рефакторить код.

Следующий пункт про гарантии. Все знают что гарантии от юнитов минимальны, поэтому их наличие не может быть оправданием того, что не пишутся тесты более высокого уровня, например, интеграционные. И пишутся они тоже программистами. Тогда возникает вопрос, зачем писать юниты, если уже есть интеграционные?

Ответом может быть: но они же быстрые. В реальности, в современных фреймворках скорость выполнения интеграционных тестов достаточно быстрая, чтобы не испытывать проблем. Да, при этом есть определенные техники работы с базой данных (не Моки!) которые надо соблюдать, но это уже давно отработанная история. Медленно же выполняются e2e тесты, но они пишутся независимо от юнит тестов, поэтому тут даже нет выбора.

p.s. Какие тесты в основном пишут в вашем проекте?
  • 👍 57
  • 👎 27
  • 🤡 7
  • ❤ 1
  • 🤔 1
More from @orgprog
  1. Sep 29, 2026Плановое обслуживание кода Даже если вы настроили у себя процесс разработки, в котором все…
  2. Sep 27, 2026Выпуск опубликован, можно смотреть и слушать. Сегодня в подкасте создатель Вастрик Клуба В…
  3. Sep 26, 2026Костные наушники Под каждым видео коммент, что за наушники ты носишь? Это костные наушники…
  4. Sep 24, 2026Статистика участия в опенсорсе Активно разрабатывая я регулярно наыткаюсь на баги и не дор…
  5. Sep 21, 2026Банда четырех для эпохи агентов Количество паттернов по тому, как эффективно работать с ИИ…
  6. Sep 16, 2026Главное правило принятия архитектурных решений Когда-то давно в одной из книжек я прочитал…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →