Быстро выполняющиеся тесты, подтверждающие сохранение поведения, способны значительно ускорить и обезопасить разработку.

Свойства модульных тестов:

  • Быстрый прогон (быстрая обратная связь, меньше 1/10 секунды на тест)
  • Точечная локализация ошибок за счет узко изолированной области проверок в каждом отдельном тесте

Важно отделять модульные тесты от других видов тестов, запускать их отдельно и иметь возможность запускать изолированно некоторое подмножество таких тестов.

Источник: Эффективная работа с унаследованным кодом


Юнит-тесты не уменьшают количество дефектов. Их назначение - это “страховочная сетка”, позволяющая двигаться быстрее, экспериментировать и улучшать кодовую базу. Они вскрывают “неизвестные неизвестные” - неявные взаимосвязи между фрагментами кода и возможности по безопасному изменению кода.

Если вы никогда не меняете код, покрытый юнит-тестом, то ценность этого юнит-теста равна нулю.

Прогон таких юнит-тестов редко имеет ценность, т.к. они редко выявляют ошибки. Написание таких юнит-тестов - это тот самый храповик Master Legacy Code Incrementally, который позволяет последовательно (инкрементно) улучшать код.

Источник: Master Legacy Code Incrementally