Деякі скажуть інакше, але я б запропонував вам розділити тестування TDD та Unit. TDD - це досить психічний зсув, і тестування блоку спочатку, як правило, потребує часу. Якщо ви вважаєте їх одним предметом, є ризик, що ви відразу не побачите достатньої користі, і з’явиться спокуса просто скинути з нього TDD та Unit Testing.
Перш за все - написати кілька тестів з одиниці. Спочатку вони не повинні бути ідеальними. Просто навчіть себе, як тестувати невеликі одиниці коду та як використовувати глузування для ізоляції компонентів.
Це найбільший показник часу, але, безумовно, найбільший окуп. Як тільки ви помітите, що вам більше не доведеться перегортати 14 веб-сторінок, щоб дістатися до тієї, яку ви хочете протестувати, ви дізнаєтесь, про що я говорю.
Для мене великим моментом Eureka було додаток для Windows, де я намагався перевірити регулярний вираз, який вимагав заповнити дві форми, перш ніж я міг дістатися до нього. Я встановив NUnit і написав тест навколо цього методу і побачив, як швидко я економив години тестування. Потім я додав ще тести для вирішення кращих справ. І так далі.
Тоді навчіться добре писати одиничні тести. Дізнайтеся про баланс між крихкими тестами, які швидко складаються та складаються безліч індивідуальних тестів. Це досить легко. Урок полягає в тому, що в ідеалі кожен тест випробовує лише одне, але ви швидко дізнаєтесь, скільки часу займає, тому ви починаєте трохи згинати правило, поки не напишете тест, який порушується при кожній зміні коду, потім ви рухаєтесь назад до правильного балансу (що ближче до першого, ніж до останнього).
Як я вже сказав, TDD - це головний ментальний зсув у вашій роботі. Однак це не додасть багато часу вашому процесу розробки, як тільки ви вже пишете тести. І ви, я обіцяю, побачите, як ваш стиль кодування покращиться на ваших очах. А точніше, якщо ви не кинете його, це не для вас.
Останнє, що слід пам’ятати, - це те, що TDD не обмежується одиничними тестами. Дизайн, керований тестом на прийняття, є частиною TDD. Ще одна вагома причина - не змішувати їх на увазі.