Лучший ответ, который я видел на этот вопрос, был предоставлен ребятами из Atomic Object и их шаблоном Presenter First . По сути, это реализация шаблона MVP, в которой (как следует из названия) вы начинаете работать с Presenter.
Это предоставляет вам очень легкий объект (поскольку презентатор в основном предназначен для перенаправления данных из модели в представление и событий из представления в модель), которые могут напрямую моделировать ваш набор действий пользователя. При работе с Presenter представление и модель, как правило, определяются как интерфейсы и имитируются, поэтому вы вначале сосредотачиваетесь на определении того, как пользователь взаимодействует с вашими объектами.
Мне обычно нравится работать таким образом, даже если я не выполняю строгий шаблон MVP. Я считаю, что сосредоточение внимания на взаимодействии с пользователем помогает мне создавать бизнес-объекты, с которыми легче взаимодействовать. Мы также используем Fitnesse у себя дома для интеграционного тестирования, и я считаю, что написание приспособлений для Fitnesse при построении моих бизнес-объектов помогает сосредоточить внимание на взгляде пользователя на историю.
Я должен сказать, однако, что вы заканчиваете довольно интересным циклом TDD, когда начинаете с неудачного теста Fitnesse, затем создаете неудачный модульный тест для этой функциональности и работаете обратно в стек. В некоторых случаях я также пишу модульные тесты базы данных, так что есть еще один уровень тестов, которые нужно написать, выполнить неудачно и пройти до того, как пройдут тесты Fitnesse.