当我仅限于EF 3.5实体时编写单元测试的最佳方式是什么?测试实体框架3.5
回答
如果你想自己单元测试你的查询,我强烈推荐你设置一个测试数据库并用真实数据测试它们。使用IObjectSet<T>
为了替代内存中的集合以便单元测试运行是一个糟糕的想法。在linq-to-objects之下运行linq查询的方式,以及如何将其解析为T-SQL命令,即如何处理空值之间存在差异。例如,
db.People.Where(p => p.AccountNum == variable);
如果这是使用LINQ到对象(如你的埋入在为IObjectSet<T>
的单元测试的替代设置一些内存对象),然后将完美运行。然而,如果你正在运行的是针对数据库,那么如果变量为空,您的查询将打破,因为
WHERE [peopleTableAlias].[AccountNum] = @param1
查询,将会产生与@参数1是空,这将是毫无价值的,因为你真的需要生成一个IS NULL查询。
然而,如果你想测试你的业务逻辑,它调用你的EF DataContext的,那么我会说包裹起来这些查询到数据访问对象,标记你的方法是虚拟的,注射称需要它们的地方的DAO ,在你的单元测试中,用手动模拟替代那些方法来为测试返回所需的值,或者用你最喜欢的模拟框架(即Rhino)做同样的事情。
EDIT - 对不起,IObjectSet<T>
仅限于EF4,显然你没有。但由于使用该单元测试是我推荐的而不是,所以答案仍然适用。
我要测试的课程是DAL。所以建立一个测试分贝似乎是正确的路要走。你有没有关于使用测试数据库或我需要注意的任何好的提示? – Ols1 2011-02-16 16:07:17
- 1. 实体框架(.NET 3.5)
- 2. 实体框架6和单元测试
- 3. 单元测试实体框架
- 4. 单元测试实体框架验证
- 5. 测试实体框架模型
- 6. 实体框架和负载测试
- 7. 实体框架4.0单元测试
- 8. 实体框架迁移集成测试
- 9. 用SQL Compact 3.5插入实体框架
- 10. 动态where子句实体框架3.5
- 11. 实体框架(3.5) - 拒绝更改
- 12. 比较外键的实体框架3.5
- 13. .NET 3.5 SP1和ADo.NET实体框架
- 14. 从实体框架3.5移到4.0
- 15. 枢轴在c#实体框架3.5
- 16. 下载.NET 3.5的实体框架
- 17. 实体框架3.5“查找”方法?
- 18. .NET Framework 3.5的单元测试框架?
- 19. 具有ms单元测试框架的单元测试实体框架
- 20. 测试实体实体框架6单元测试枚举后消失
- 21. 实体框架预测
- 22. 导出实体框架4数据模型到实体框架3.5
- 23. .NET 3.5框架中的ADO.NET实体框架和WCF
- 24. 实体框架3.5:实体类的变化构造
- 25. 检测框架版本3.5
- 26. 实体框架:实现单元测试的接口
- 27. 实体框架+ Unity框架
- 28. 实体框架
- 29. 实体框架
- 30. 实体框架
你想要单元测试什么?你能提供更多的信息,说明你正在尝试做什么或有什么问题? – Jeff 2011-02-16 14:43:04