TDD - не удовольствия ради, а пользы для.

TDD или же test driven development - это такой подход в разработке ПО, когда ты настолько преисполнился в своем познании, что явно представляешь требуемое решение. И хакая вселенную ты сперва пишешь тест на то, чего еще нет, а потом реализуешь это нечто, пытаясь сделать так, чтобы тест стал зеленым. Это если кратко.

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

Вот что мне удалось выявить - TDD мощно бустит скорость и качество отдельной фичи в тех случаях, когда фича является типовой. В моем случае примером типовой фичи служит добавление в Duit реализации нового типа виджета. Каждый новый виджет - это композиция уже готовых супер-классов, миксинов и интерфейсов, а это значит, что сценарии тестирования для 85% виджетов будут очень и очень похожи. Разве что будем проверять соотвествие разных свойств для разных виджетов.

Итак, вот к чему я веду - TDD классно работает уже на "перекопанной грядке", где ясны большинство corner-case. Если бы я начал заниматься подобным при старте проекта, то гарантированно потерял бы кучу времени. Поэтому если я не могу за 5-10 минут накидать основные тестовые сценарии, значит мне не так уж и нужно - лучше сосредоточиться непосредственно на фиче. Первым делом, первым делом разработка, ну а тестики, а тестики потом)