Просто створення тестового проекту та написання деяких методів тестування є різновидом TDD, але, на мій досвід, це не дуже допоможе, якщо ви не працюєте над бібліотекою, де є відомий API, а виклики методів безпосередньо відповідають чомусь очікуваному користувачем . Вам потрібно скласти правильний список тестів, і для нетривіального додатку це зробити дуже важко.
Я рекомендую спробувати SpecFlow - він продовжує визначати тести, добре відокремлені від реалізації, а структура файлів функцій змушує задуматися про те, що ви насправді тестуєте.
Коли ви визначаєте функцію, ви просто пишете щось на кшталт
When a user is saved
Then the user should exist
Тому що ви не перебуваєте в файлі коду в даний момент, ви не спокушаєтесь думати про деталі реалізації, наприклад, який метод викликається для створення користувача або навіть для якого класу він реалізований. Ви можете використовувати теги для вибору різних реалізацій, тому на цьому рівні не має значення, чи "користувач збережений" означає дзвінок у CreateUser або відкриття браузера та подання форми.
Після того, як буде визначено функції, усі тести будуть створені та почнуть проходити, коли ви реалізуєте визначення кроків та фактичний код програми, що тестується.
Для простого додатка ви можете просто створити файли функцій, але для чогось більш складного корисно заздалегідь скласти більш повну специфікацію. Для цього я використовую розумний додаток iPad, але ви можете використовувати будь-який інструмент, який вам найбільше комфортний.
Почніть зі списку функцій високого рівня, таких як "Реєстрація користувача". Вони, як правило, занадто широкі, щоб писати тести безпосередньо, тому розбивайте їх на піддіапазони, які можна чітко визначити і загалом відображати на конкретну дію користувача, наприклад "Зберегти користувача" або "Переглянути наявного користувача".
Кожній з цих підфункцій знадобиться список сценаріїв, який разом повністю визначає, чи працює функція чи ні, такі речі, як "Можна зберегти дійсного користувача" та "Неможливо зберегти користувача з подвійним ім'ям користувача".
Коли ви створюєте цей список, як правило, стане зрозуміло, куди потрібно підкоригувати структуру - якщо ви не можете придумати тести будь-якого сценарію для функції, або якщо в одній функції ви занадто багато, то ця функція, ймовірно, визначена в неправильний рівень і його потрібно розділити або змінити.