Я собираюсь запустить собственный проект, который будет представлять собой ASP.NET MVC + Fluent NHibernate. Я хочу как можно больше использовать тестовый подход. Итак, откуда именно я начинаю? Схема базы данных? Модель домена? Сопоставление классов модели домена в базе данных?Запуск нового проекта - с чего начать?
ответ
Если у вас мало опыта в написании тестов, это проще всего начать с модели домена (или более высокого уровня чуть ниже пользовательского интерфейса). Когда вы управляете дизайном модели домена с помощью TDD, вы узнаете, как должна выглядеть схема базы данных. Возможно, неплохо отложить внедрение базы данных в систему, так как обработка миграции схемы базы данных добавит некоторые накладные расходы на разработку. И это также приведет к лучшему дизайну, потому что тогда модель домена будет лучше отделена от уровня базы данных.
Если вы умеете писать тесты и в TDD, может быть полезно начать с сквозного теста (в этом случае они будут написаны против веб-интерфейса) и создать тонкий фрагмент функциональности, который затрагивает все архитектурные части системы (как рекомендовано в GOOS). Другими словами, создайте walking skeleton. Преимущества такого подхода заключаются в том, что (1) вы сможете решать и решать проблемы интеграции прямо в начале, (2) когда сквозные тесты используются для управления дизайном, это может помочь вам избежать реализации избыточные части и (3) трудности написания сквозных тестов дают вам возможность улучшить архитектуру и добавить контрольные крючки, что также может быть полезно для мониторинга системы в процессе производства. (Тестирование с сосредоточенными модулями по-прежнему будет необходимо, поскольку они обеспечивают расчетное давление на уровне класса, плюс они работают быстрее и, следовательно, обеспечивают более быструю обратную связь.)
Я написал больше об этом последнем подходе в Design for Integrability.
Требования к сбору.
Начните с макета/прототипа (например, Balsamiq Mocks) приложения, а затем создайте представления, насмешливые контроллеры, когда вы идете вперед, а затем напишите логику контроллера, высмеивая DAO/репозитории на этом пути. Когда вы начнете писать свои DAO/Repositories, у вас будет хорошее представление о ваших необходимых объектах домена. Выйдите из них и используйте Fluent Nhibernate для создания вашей базы данных.
По крайней мере, это так, я пытаюсь что-то делать.
Я рекомендую вам S#arp Architecture проект, который использует лучшие практики, сочетающие:
- NHibernate
- FluentNhibernate
- TDD/DDD с моделью флиртует подхода с Sqlite базы данных для модульного тестирования
- Mocking
- Repository модель
Вы также можете установить арку арки S #. шаблон для Visual Studio IDE.
Я начал эту поездку недавно, я бы предложил http://jasondentler.com/blog/2009/08/how-to-using-the-n-stack-part-1/ как отправную точку оттого. Хотя я не согласен со всем этим, он дал мне несколько идей. –
Вы забыли Agile, инъекцию зависимостей и DDD. Я не могу понять, как ваш проект может быть успешным, если вы не используете его. – 2010-04-01 22:20:58
Я планирую использовать DI и DDD, хотя я их не очень хорошо знаю и буду изучать их по пути – chester89