我对单元测试还很陌生。但我该如何对使用Entity Framework编写的DAL进行单元测试,以确保我的DAL代码能正确工作,但不会实际触及数据库?请尽可能详细地解答。
我对单元测试还很陌生。但我该如何对使用Entity Framework编写的DAL进行单元测试,以确保我的DAL代码能正确工作,但不会实际触及数据库?请尽可能详细地解答。
如果你想测试你的数据访问层是否正确工作,那么在某个时刻你真的需要对其进行数据库测试,否则你实际上并没有测试它是否可用。
在开发中,对数据访问层进行单元测试是一个非常普遍的头痛问题。就大部分情况而言,我建议您跳过它。
现在大多数ORM都提供某种类型的查询语言,例如LINQ或HQL等。因为适当的单元测试要求您不实际访问数据库,您必须模拟ORM,这是最麻烦的事情。在我看来,这不值得。最终,您只能测试您是否在代码中编写了正确的查询;您根本没有回归价值,并且可以通过检查代码更好地服务于您的目的。
我并不是说您不应该测试对数据访问层的使用,但是不要尝试进行单元测试。您仍然应该有一套集成和用户验收测试用于测试您的程序/系统;让它们处理数据访问的测试。
当我对数据访问层进行单元测试时,我会使用事务并在单元测试结束时回滚,以使数据库保持清洁。