Якщо ви не збираєтеся писати код, не тестуючи його, ви завжди будете нести витрати на тестування.
Різниця між тестуванням одиничних тестів та відсутністю їх є різницею між витратами на написання тесту та вартістю його виконання порівняно з витратами на тестування вручну.
Якщо вартість написання одиничного тесту становить 2 хвилини, а вартість виконання тесту на одиницю становить практично 0, але вартість ручного тестування коду становить 1 хвилину, ви перериваєтесь навіть у тому випадку, коли ви провели тест двічі.
Протягом багатьох років я знав, що мені не вистачало часу, щоб написати модульні тести для свого коду. Коли я писав тести, вони були роздуті, важкі речі, які лише спонукали мене думати, що я повинен коли-небудь писати одиничні тести, коли я знав, що вони потрібні.
Нещодавно мені запропонували використовувати тестові розробки, і я виявив, що це повне одкровення. Зараз я твердо переконаний, що не маю часу не писати одиничні тести .
На мій досвід, розвиваючи тестування на увазі, ви закінчуєте більш чисті інтерфейси, більш цілеспрямовані класи та модулі та загалом більше SOLID , тестовий код.
Кожен раз, коли я працюю зі застарілим кодом, який не має одиничних тестів, і мені доведеться щось тестувати вручну, я продовжую думати, "це було б набагато швидше, якби цей код вже мав одиничні тести". Кожен раз, коли мені доводиться намагатися додавати функціональні можливості тестування блоку до коду з високою зв'язкою, я продовжую думати, "це було б набагато простіше, якби це було написано розв'язаним способом".
Версія TL; DR :
Напишіть тест, коли вартість написання тесту плюс вартість його виконання стільки разів, скільки потрібно, швидше за все, буде меншою, ніж вартість ручного тестування стільки разів, скільки потрібно.
Пам’ятайте, що якщо ви користуєтеся TDD, вартість написання тестів, швидше за все, знизиться, коли ви вдосконалитесь, і якщо код абсолютно тривіальний, ви, ймовірно, в кінці запустите тести частіше, ніж ви очікуєте.