【发布时间】:2017-10-15 18:18:29
【问题描述】:
我正在使用 Entity Framework Core 2.0-preview1 和 InMemory 2.0-preview1。
每个单元测试类都继承一个一次性类,该类会创建一个新的内存数据库,供其父级使用。
public Constructor()
{
var services = new ServiceCollection();
services.AddEntityFrameworkInMemoryDatabase()
.AddDbContext<DBContext>(o => o.UseInMemoryDatabase("Test"));
var serviceProvider = services.BuildServiceProvider();
Context = serviceProvider.GetRequiredService<DBContext>();
}
给数据库命名的问题是它不能在多个测试之间共享,因此每个测试都会创建一个新的上下文,导致每个单元测试持续几秒钟,这对我的构建服务器来说是不可接受的。我找不到太多关于为什么在 2.0 中更改此内容或如何解决此问题的文档。
我尝试使用新的.UseTransientInMemoryDatabase,但这似乎没有任何改变。
【问题讨论】:
-
如果跨单元测试共享相同的数据库上下文,如何确保每个测试的特定前置条件和断言后置条件?
-
我对添加到上下文中的实体进行一些跟踪,并在每次测试后将它们刷新,这使我能够绕过每个请求的数据库初始化时间。
-
你试过使用静态构造函数吗?
-
使用什么测试框架?
-
设置一个夹具来提供你的数据库
标签: c# sql asp.net-core entity-framework-core xunit