4

我希望我的每个单元(集成)测试方法都为每个测试使用干净且一致的数据库和特定的测试数据。

您能否为我提供一些代码示例/片段,并告诉我对于 EF 5 数据库优先和模型优先两种场景的以下问题的最佳实践是什么。

  1. 如何为每种测试方法创建数据库?
  2. 如何为每种测试方法设置测试数据?
  3. 如何删除每个测试方法的数据库?
  4. SSDT 项目用于处理数据库模式,如何在每次测试运行时使用当前的 SSDT 模式?这样测试总是针对数据库的当前开发版本执行。

请考虑以上问题的以下假设:

  1. 单元测试应在开发机器和服务器 CI 构建上本地执行。
  2. 每个测试可能有不同的测试数据。
  3. 应避免手动定义 .mdf 测试文件,因为多个开发人员正在开发该产品,并且存在潜在风险,即一个 deleoper 会覆盖另一个开发人员之前可能已签入的 .mdf 文件的更改 -> 开发过程应该很简单尽可能。
  4. 使用了 SSDT,所以也许这是一个创建数据库的选项(可能不是一个好的选项,因为我希望为每个测试创建数据库)并且我对 SSDT 的可能性还没有深入的了解。
  5. 测试执行时间的良好性能将是很好的。
  6. 使用 VS/TFS 2012。
  7. 使用 SQL Server 2012。
  8. 应用程序是 C# 桌面应用程序。
  9. 模拟 EF 上下文等不是一种选择。

我希望你能指导我如何解决上面的 4 个问题。我不知道 EF 是否为我的挑战提供了一些功能(我认为只是代码优先),或者这一切是否必须通过执行 SQL 脚本或类似的东西来解决。

谢谢!

4

0 回答 0