che*_*r89 3 asp.net-mvc unit-testing test-first
我将开始一个我自己的项目,它将是ASP.NET MVC + Fluent NHibernate.我想尽可能多地使用测试优先方法.那么,我从哪里开始呢?数据库架构?领域模型?将域模型类映射到数据库?
如果您在编写测试方面经验不足,那么最简单的方法是从域模型(或UI下方的更高级别)开始.当您使用TDD驱动域模型的设计时,您将知道数据库模式需要是什么样的.推迟向系统引入数据库可能是件好事,因为处理数据库模式迁移会增加开发的开销.这也将导致更好的设计,因为那时域模型将更好地与数据库层分离.
如果您擅长编写测试和TDD,那么从端到端测试开始(在这种情况下,它们将针对Web UI编写)并生成一小部分涉及所有架构部分的功能可能是有益的.系统(如GOOS中所推荐).换句话说,创建一个行走骨架.这种方法的好处是:(1)您将能够在一开始就解决和解决集成问题,(2)当端到端测试用于驱动设计时,它可以帮助您避免实施多余的部分,以及(3)编写端到端测试的困难迫使您改进架构并添加监控挂钩,这对于监控生产中的系统也很有用.(仍然需要进行重点单元测试,因为它们在班级提供设计压力,而且运行速度更快,从而提供更快的反馈.)
我在Design for Integrability中写了更多关于后一种方法的文章.