Отказ от ответственности: я не против юнит-тестирования. Когда люди говорят «TDD», я предполагаю, что они имеют в виду «звучащую болезнью» версию, в которой они пишут тесты, прежде чем они пишут код для 80-100% всего кода, который они пишут.
Это активатор. Если выявление проблем регрессии является для вас такой большой проблемой, что полностью автоматический TDD с самого начала кажется стоящим, написание тестов для каждого последнего фрагмента кода, которое вы пишете, может фактически помочь вам игнорировать реальную проблему.
Это помогает людям игнорировать реальную проблему. Когда исправление одной ошибки превращается в игру «бей-моль», где всплывают еще две, архитектура взрывается. Фокус. Сосредоточиться на реальной проблеме. Видеть кротов до того, как их нужно ударить, очень хорошо, но вы не должны быть там с самого начала.
Это кушает много времени. Я ударил случайные ошибки. Я не бью так много, что кажется, что стоит ставить перед каждой новой вещью, которую я пишу, тест на это. Поймать проблемы, где они могут произойти. Обрабатывайте ошибки так, чтобы их было легко диагностировать. Validate. Тест в ключевых точках перекрытия / узкого места. Но для того, чтобы кричать вслух, не проверяйте каждый последний получатель и установщик на что-то, что, вероятно, не должно было бы иметь их во-первых.
Ориентация на проектирование: даже хороший разработчик не может написать лучший код, какой только мог бы сосредоточиться на тесте. Если вам кажется, что вы можете получить достойный дизайн, то рекомендую посмотреть выше, что касается «сосредоточения на реальной проблеме».
Сбой макропроекта: кодовая база моей текущей работы пронизана интерфейсами, которые никогда не используются более одного раза, и массовыми нарушениями базового принципа DRY, которые я окончательно начал понимать, когда понял, что люди пишут для тест-фреймворков и тестируют в генеральный. Тестирование не должно приводить к тупой архитектуре. Нет, на самом деле, нет ничего более масштабируемого или достойного предприятия для копирования и вставки 20 файлов, а затем только внесения существенных изменений в два из них. Идея состоит в том, чтобы разделить проблемы, а не разделять их по центру Грубая и бессмысленная абстракция обойдется вам дороже, чем 95% покрытия.
Это действительно популярно, и многим людям это действительно нравится. Если это не является достаточной причиной, чтобы хотя бы переоценить и / или проверить дерьмо любой технологии перед внедрением, выучите некоторую паранойю.