Я працював так, як ти працюєш. І я не збираюся говорити тобі, що не можеш. Я попередитиму вас про щось, на що ви можете зіткнутися.
Коли кожен тест одиниці просто модернізувати, важко навчитися робити їх гнучкими. Вони, як правило, не що інше, як тести регресії. Оскільки ви ніколи не використовували їх, щоб допомогти вам рефактору, дуже просто писати види тестів, які насправді ускладнюють рефакторинг. Це, як правило, виходить з-під контролю, поки ви не втратите віру в TDD.
Однак ви вже над чимось працюєте. Я не збираюся казати тобі зупинятися. Я скажу, що варто було б почати щось інше, що у вас є час, щоб вивчити та слідувати цикл червоного зеленого рефактора з самого початку. Переконайтесь, що ви справді використовуєте тести, щоб допомогти вам рефактор. Поки ви не освоїли цей спосіб роботи, використовуйте його вкрай на чомусь важливому. Це дуже інший спосіб кодування та звикання. Зробити це наполовину, нікому не принесе користі.
Це сказало
Мені здається, що надзвичайно простіше спочатку писати інтеграційні тести, працювати над кодом, а потім, як тільки API, трохи зміцнюється, насправді працює над додаванням одиничних тестів. Типи тестів, які я можу запустити на своїй основній функції, так би мовити, і є більш "від кінця до кінця", ніж будь-що інше.
Зрозумійте, що одиничний тест НЕ є просто тестом, який діє на одному класі. Поки API, над яким ви працюєте, може бути протестований, не виконуючи жодного з перелічених нижче, ви просто виконуєте тестування одиниць:
- Він спілкується з базою даних
- Він спілкується по всій мережі
- Це стосується файлової системи
- Він не може працювати одночасно з будь-яким іншим тестом
- Для його запуску потрібно зробити спеціальні речі (наприклад, редагування конфігураційних файлів).
Майкл Перо: Набір правил тестування одиниць
Тож якщо ваш тест на кінець включає більше одного об'єкта, це добре. Це одиничне тестування, а не тестування об'єктів.
Як і приватні методи більше не потрібно тестувати, а потім тестувати через тестування публічних методів, які ними користуються, об'єкти не потрібно спочатку розробляти під їх власним тестуванням. Тільки коли об'єкти розглядаються для використання незалежно від історії до кінця, до них дійсно потрібно поводитися так, як у них є власний інтерфейс та поведінку для підтвердження. Якщо ви обережно ставитесь до цього, це стає тоді, коли ви робите ці об’єкти загальнодоступними. Таким чином ви не обіцяєте, що не пройшли перевірку.