1

与使用真实数据库的集成测试相比,我在谷歌中读到的许多人都在努力使用所谓的内存数据库对存储库类进行单元测试。

做后者的问题在哪里?

4

2 回答 2

2

如果您使用的是 EF,则不必编写测试来查看 EF 是否正确保存数据。所以你不需要一个真正的数据库来进行测试,你只需要测试你的代码逻辑和内存数据库最适合这种情况,它有助于分离关注点,灵活,易于运行并且运行速度比使用真实的数据库。

此外,使用真实数据库运行集成测试非常复杂。它在运行之前需要一些配置(连接字符串、删除和重新创建数据库...),这可能需要一些时间。测试可能由于配置错误(例如在测试期间使用共享数据库)而失败,并且需要时间来调试。

于 2013-02-18T08:03:02.433 回答
0

无论您是针对内存数据库还是真实数据库进行测试,您都没有进行单元测试——两​​者都是集成测试。两者都将实际测试某种形式的连接和提供者实现。

我会看到使用内存数据库与真实数据库的主要好处是

  • 权限 - 使用真实数据库通常需要更高级别的权限和连接性。就像文件写入权限或对数据库服务器的访问一样。内存数据库可能不需要相同级别的权限。
  • 速度 - 启动和拆除内存数据库比真正的数据库更快

根据您的模式(即,如果您使用的是工作单元),您甚至可能不需要数据库来测试您的存储库。

于 2013-02-18T08:08:53.810 回答