使用Entity Framework测试插入数据库

时间:2012-03-17 08:25:11

标签: unit-testing frameworks entity

我正在使用EF进行TDD项目。我想对我制作的插入操作进行单元测试。我该怎么做?

我的想法;

  1. 在单元测试中,如果插入成功,我可以查询数据库。

  2. 我可以依赖商业图书馆的其他方法来检查插入是否成功,但我认为这违反了UNIT测试的目的。

  3. 你有什么建议?

    或者我应该使用模拟框架,如Moq?

3 个答案:

答案 0 :(得分:1)

您要做的是称为集成测试,而不是单元测试。人们想要测试ORM行为的唯一目的是检查映射是否有效。所以你的测试用例非常有效。 你应该做的只是创建你的实体对象,将其保存在数据库中。获取持久化对象并与刚刚创建的实体对象进行比较。如果所有字段/属性都相同,则EF映射可以正常工作。

答案 1 :(得分:1)

这实际上是集成测试而非单元测试,通常使用TDD i测试我的系统的边界,即最多但不包括实际调用外部系统的组件。可以在此处找到此方法的示例:http://dl.dropbox.com/u/37129059/StaticVoid.Repository.Demo.zip使用我的存储库框架(http://blog.staticvoid.co.nz/2011/10/staticvoid-repository-pattern-nuget.html).

说到这一点对于进行集成测试也很有价值,特别是在大型项目上,无论是通过自动UI测试还是其他方式。

答案 2 :(得分:1)

我认为这是关于EF中可测试性的最佳文章:

http://msdn.microsoft.com/en-us/library/ff714955.aspx