我将开始一个属于我自己的项目,它将是ASP.NET MVC + Fluent NHibernate。我想尽可能多地使用测试优先方法。那么,我从哪里开始呢?数据库架构?领域模型?将域模型类映射到数据库?
答案 0 :(得分:6)
如果您在编写测试方面经验不足,那么最简单的方法是从域模型(或UI下方的更高级别)开始。当您使用TDD驱动域模型的设计时,您将知道数据库模式需要是什么样的。推迟向系统引入数据库可能是件好事,因为处理数据库模式迁移会增加开发的开销。这也将带来更好的设计,因为那时域模型将更好地与数据库层分离。
如果您擅长编写测试和TDD,那么从端到端测试开始(在这种情况下,它们将针对Web UI编写)并产生一小部分触及的功能可能是有益的。系统的所有架构部分(如GOOS中所推荐)。换句话说,创建一个walking skeleton。这种方法的好处是:(1)您将能够在一开始就解决和解决集成问题,(2)当端到端测试用于驱动设计时,它可以帮助您避免实施多余的部分,以及(3)编写端到端测试的困难迫使您改进架构并添加监控挂钩,这对于监控生产中的系统也很有用。 (仍然需要进行重点单元测试,因为它们在类级别提供设计压力,而且运行速度更快,从而提供更快的反馈。)
我在Design for Integrability撰写了更多有关后一种方法的文章。
答案 1 :(得分:2)
需求收集。
答案 2 :(得分:2)
从应用程序的模拟/原型(例如Balsamiq Mocks)开始,然后写入视图,随机模拟控制器,然后编写控制器逻辑,沿途模拟DAO / Repositorys。当您开始编写DAO /存储库时,您将很好地了解所需的域对象。敲掉那些并使用Fluent Nhibernate来构建你的数据库。
至少他们正在尝试做事。
答案 3 :(得分:1)
我建议您S#arp Architecture项目使用最佳实践组合:
您也可以安装S#arp arch。 Visual Studio IDE的模板。