Протягом багатьох років я знав, що мені не вистачало часу, щоб написати модульні тести для свого коду. Коли я писав тести, вони були роздуті, важкі речі, які лише спонукали мене думати, що я повинен коли-небудь писати одиничні тести, коли я знав, що вони потрібні.
Тоді я почав використовувати розробку тестових програм, і я виявив, що це повне одкровення. Зараз я твердо переконаний, що не маю часу не писати одиничні тести .
На мій досвід, розвиваючи тестування на увазі, ви закінчуєте більш чисті інтерфейси, більш цілеспрямовані класи та модулі та загалом більше SOLID , тестовий код.
Кожен раз, коли я працюю зі застарілим кодом, у якого немає тестових одиниць, і доводиться щось тестувати вручну, я продовжую думати, "це було б набагато швидше, якби цей код вже мав одиничні тести". Кожен раз, коли мені доводиться намагатися додавати функціональні можливості тестування блоку до коду з високою зв'язкою, я продовжую думати, "це було б набагато простіше, якби це було написано розв'язаним способом".
Порівняння та порівняння двох експериментальних станцій, які я підтримую. Один існує вже деякий час і має багато застарілого коду, а інший відносно новий.
Додаючи функціональність до старої лабораторії, часто трапляється потрапляти в лабораторію і витрачати багато годин, працюючи над наслідками необхідної їм функції, і як я можу додати цю функціональність, не впливаючи на будь-яку іншу функціональність. Код просто не налаштований, щоб дозволити тестування в режимі офлайн, тому майже все повинно бути розроблено в режимі он-лайн. Якби я намагався розвивати офлайн, то в кінцевому підсумку я мав би більше макетних об'єктів, ніж було б розумно.
У новій лабораторії я, як правило, можу додати функціональність, розвиваючи його в режимі офлайн за моїм столом, глузуючи лише ті речі, які негайно потрібні, а потім лише провести короткий час у лабораторії, випрасувати будь-які інші проблеми, не усунуті -лінія.
Для ясності, а оскільки @ naught101 запитав ...
Я, як правило, працюю над програмним забезпеченням для експериментального контролю та збору даних, з деяким спеціальним аналізом даних, тому поєднання TDD з контролем редагування допомагає задокументувати як зміни базового обладнання експерименту, так і зміни вимог щодо збору даних з часом.
Навіть у ситуації розробки дослідницького коду я міг бачити значну користь від кодифікації припущень, а також здатності бачити, як ці припущення розвиваються з часом.