出于单元测试的目的,是否可以这样做:
- 将某种格式的测试数据(XML?)签入源代码控制
- 运行单元测试时,从该测试数据中实例化某种内存数据库
- 在单元测试运行期间,让 EF 对此在内存数据库中运行
?
我们不希望我们的单元测试依赖于存在的特定外部数据库,并且处于特定状态。
我们也不想在我们的代码和测试中维护两个不同的“世界”,即 EF 针对真实数据库运行的真实世界和我们的测试针对某种 EF 模拟运行的虚假工作。
出于单元测试的目的,是否可以这样做:
?
我们不希望我们的单元测试依赖于存在的特定外部数据库,并且处于特定状态。
我们也不想在我们的代码和测试中维护两个不同的“世界”,即 EF 针对真实数据库运行的真实世界和我们的测试针对某种 EF 模拟运行的虚假工作。
单元测试不应该依赖于任何数据库。对数据库的任何依赖(甚至在内存数据库中)都意味着您正在进行集成测试,并且应该针对您要使用的真实数据库进行集成测试。
我不知道任何用于 EF 的 XML 数据库,但即使它存在,您也会回到您的要求之前:我们也不想在我们的代码和 test 中维护两个不同的“世界”。每个数据库都有自己的 EF 提供程序,由不同的公司创建。即使是 MS SQL Server 和 MS SQL Server Compact Edition 的提供程序也存在很大差异,因此在它们之间进行切换非常具有挑战性。
你应该做什么: