【问题标题】:Entity Framework 4 CTP 5 POCO - How to Unit Test my Repository<T>Entity Framework 4 CTP 5 POCO - 如何对我的存储库进行单元测试<T>
【发布时间】:2011-01-19 17:22:14
【问题描述】:

这是另一个问题Entity Framework 4 CTP 4 / CTP 5 Generic Repository Pattern and Unit Testable) 的第二部分,我在其中询问了如何使用 EF 4 POCO 实现通用存储库模式。现在我的存储库正在运行,我想知道如何对我的存储库(TDD 或 BDD)进行单元测试。

谢谢大家。

【问题讨论】:

  • 我使用 XUnit 进行测试并使用 AutoRollback 功能。我不知道 NUnit 是否有这个功能,但你可以 google 一下。这样你就可以在你的 repos 上进行集成测试,这将改变你的数据库,然后回滚更改。
  • 谢谢 Paul,我去看看 NUnit 是否有这个功能。
  • 你有没有在 NUnit 中找到类似 AutoRollback 的东西?
  • 我没有使用 AutoRollBack 功能。我有一个 Initializer 类,它覆盖“种子”方法并在我需要数据的新副本时播种/恢复数据:)

标签: unit-testing entity-framework-4 tdd repository-pattern bdd


【解决方案1】:

嘿,我写了一些关于使用 SpecFlow 进行此操作的博客文章。但是当事情变得复杂时,那就是一场灾难。

我试图实现一个测试存储库,这也是一场灾难。尝试复制数据上下文的工作方式并不是一个聪明的主意。

但您会从错误中吸取教训,并在此过程中获得乐趣。我学到的是使用轻量级或内存数据库 (SQLite)。

所以我肯定会说使用 SQLite 数据库,如果你可以让它与 EF Code First 一起工作的话。我无法做到这一点,所以我选择了 SQL CE 精简版。即使在测试中,它也能以惊人的速度运行。

您可能对这篇博文有所了解,但请重新检查第 4 步。http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

因此,从本质上讲,我在最近的项目中所做的只是拥有一个单独的数据库 SQL CE 4.0 精简版进行测试。超级快,没有抱怨。

【讨论】:

  • 谢谢尼克...我想我可以直接使用数据库,因为无论如何我都在使用 SQL CE 进行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多