gpt4 book ai didi

entity-framework - 内存数据库中的 Entity Framework (代码优先)用于单元测试

转载 作者:行者123 更新时间:2023-12-03 07:30:21 24 4
gpt4 key购买 nike

出于单元测试的目的,是否可以这样做:

  • 将某种格式(XML?)的测试数据 checkin 源代码管理
  • 运行单元测试时,根据此测试数据实例化某种内存数据库
  • 在单元测试运行期间让 EF 在内存数据库中针对此运行

我们不希望我们的单元测试依赖于存在且处于特定状态的特定外部数据库。

我们也不想在我们的代码和测试中维护两个不同的“世界”,一个是 EF 针对真实数据库运行的真实世界,另一个是我们的测试针对某种 EF 模拟运行的虚假工作。

最佳答案

单元测试不应依赖于任何数据库。对数据库的任何依赖(即使在内存数据库中)都意味着您正在进行集成测试,并且应该针对您将要使用的真实数据库进行集成测试。

我不知道 EF 是否有任何 XML 数据库,但即使它存在,您也能满足您的要求:我们也不想在我们的代码和测试中维护两个不同的“世界”.每个数据库都有由不同公司创建的自己的 EF 提供程序。即使是 MS SQL Server 和 MS SQL Server Compact Edition 的提供程序也有很大不同,这使得它们之间的切换非常具有挑战性。

你应该做什么:

  • 将所有 EF 用法隐藏在某些抽象(包括 Linq-to-entities 查询等所有内容)后面,并模拟此抽象而不是 EF 进行单元测试
  • 针对您想要在生产中使用的真实数据库实现进行集成测试,以测试抽象本身

关于entity-framework - 内存数据库中的 Entity Framework (代码优先)用于单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com