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