EntityFramework核心单元测试 - SQLite内存模式与InMemory提供程序

Yuv*_*hap 15 c# unit-testing entity-framework-core .net-core

我正在为使用EntityFramework Core的项目编写单元测试,并根据我可以使用的文档SQLite in-memory modeThe InMemory provider近似数据库上下文.

文档声明SQLite in-memory mode行为类似于关系数据库,The InMemory provider并且总是表现得像关系数据库.

据我所知,SQLite模式听起来更好,因为它的行为类似于关系型数据库,而InMemory提供者却没有,但我想还有其他方面需要考虑,否则没有人会使用The InMemory provider哪种声音更糟糕.

在选择使用哪种工具之前,我应该考虑每种方法的其他优缺点吗?

Hel*_*eda 8

如果您的唯一目的是编写单元测试,请仔细查看创建测试所需的样板代码,这可能会影响您的最后期限......我会选择使我输入更少的代码!(The InMemory provider看起来更简单).

看看样本并决定:

...当然,您的项目将进行集成测试,对于那些您将连接到真实数据库并进行其他检查的项目.这就是为什么单元测试我的主要关注点是写时间,而不是模拟数据库的行为方式

  • 我完全不同意这里关注的锅炉板代码 - 它可以适当地重构为共享方法 - 不应该显着增加您的占地面积.但我同意你对单元测试和集成测试之间区别的评论.我想你应该把这个评论添加到答案中. (2认同)