Быстро выполняющиеся тесты, подтверждающие сохранение поведения, способны значительно ускорить и обезопасить разработку.
Свойства модульных тестов:
- Быстрый прогон (быстрая обратная связь, меньше 1/10 секунды на тест)
- Точечная локализация ошибок за счет узко изолированной области проверок в каждом отдельном тесте
Важно отделять модульные тесты от других видов тестов, запускать их отдельно и иметь возможность запускать изолированно некоторое подмножество таких тестов.
Источник: Эффективная работа с унаследованным кодом
Юнит-тесты не уменьшают количество дефектов. Их назначение - это “страховочная сетка”, позволяющая двигаться быстрее, экспериментировать и улучшать кодовую базу. Они вскрывают “неизвестные неизвестные” - неявные взаимосвязи между фрагментами кода и возможности по безопасному изменению кода.
Если вы никогда не меняете код, покрытый юнит-тестом, то ценность этого юнит-теста равна нулю.
Прогон таких юнит-тестов редко имеет ценность, т.к. они редко выявляют ошибки. Написание таких юнит-тестов - это тот самый храповик Master Legacy Code Incrementally, который позволяет последовательно (инкрементно) улучшать код.
Источник: Master Legacy Code Incrementally