我最近一直在玩ADO.NET实体框架,我发现它适合我正在开发的项目的需求。我也发现其非侵入性很酷。

从现有数据库生成数据模型后,您将面临集成生成的模型和业务逻辑的任务。更具体地说,我习惯于集成测试我的类,这些类通过DAL接口的模拟/存根与数据存储交互。问题是您无法使用ADO.NET实体框架执行此操作,因为它生成的实体是没有接口的简单类。

问题是:如何将TDD方法应用于使用ADO.NET Entity Framework的应用程序的开发?这是可能的,还是应该迁移到另一个DAL生成工具集?

一般承认的答案

对实体框架的一个重要批评是,它本身很难测试,例如在gef引用的ALT.Net “不信任投票”中

这是一篇博客文章,讨论如何解决这个问题,并能够在使用Entity Framework时测试代码而无需访问数据库。

如果可测试性是一个大问题,您可能希望查看另一个ORM框架,例如NHibernate,至少在Entity Framework 2.0发布之前。


热门答案

虽然原来的问题已经回答了,但我觉得我可能会添加一些内容:

我目前正在我正在构建的Intranet站点上使用Entity Framework 4.0。我可以使用已添加的POCO支持在没有数据库连接的情况下测试业务逻辑和控制器中的所有内容。

虽然POCO可以从VS 2010中包含的新t4模板生成,但我在VS 2010中找不到的东西是用于生成对象上下文的t4模板(对象上下文基本上用作内置单元) EF的工作,对于将EF对象映射到POCO至关重要。幸运的是Joachim Lykke Andersen在他的博客文章Entity Framework 4.0 Beta 1中 - POCO,ObjectSet,Repository和UnitOfWork编写了一个用于生成它的t4模板,它非常有用。如果你使用可以在没有数据库连接的情况下测试的EF4来寻求解决方案,我强烈建议实现与他的解决方案类似的东西,包括通用存储库,工作包装单元和工作单元。这非常有帮助。

祝你好运。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因