我希望我的每个单元(集成)测试方法都为每个测试使用干净且一致的数据库和特定的测试数据。
您能否为我提供一些代码示例/片段,并告诉我对于 EF 5 数据库优先和模型优先两种场景的以下问题的最佳实践是什么。
- 如何为每种测试方法创建数据库?
- 如何为每种测试方法设置测试数据?
- 如何删除每个测试方法的数据库?
- SSDT 项目用于处理数据库模式,如何在每次测试运行时使用当前的 SSDT 模式?这样测试总是针对数据库的当前开发版本执行。
请考虑以上问题的以下假设:
- 单元测试应在开发机器和服务器 CI 构建上本地执行。
- 每个测试可能有不同的测试数据。
- 应避免手动定义 .mdf 测试文件,因为多个开发人员正在开发该产品,并且存在潜在风险,即一个 deleoper 会覆盖另一个开发人员之前可能已签入的 .mdf 文件的更改 -> 开发过程应该很简单尽可能。
- 使用了 SSDT,所以也许这是一个创建数据库的选项(可能不是一个好的选项,因为我希望为每个测试创建数据库)并且我对 SSDT 的可能性还没有深入的了解。
- 测试执行时间的良好性能将是很好的。
- 使用 VS/TFS 2012。
- 使用 SQL Server 2012。
- 应用程序是 C# 桌面应用程序。
- 模拟 EF 上下文等不是一种选择。
我希望你能指导我如何解决上面的 4 个问题。我不知道 EF 是否为我的挑战提供了一些功能(我认为只是代码优先),或者这一切是否必须通过执行 SQL 脚本或类似的东西来解决。
谢谢!