UseInMemoryDatabase 上下文未在单元测试之间共享
UseInMemoryDatabase context isn't being shared across unit tests
我正在使用 Entity Framework Core 2.0-preview1
和 InMemory 2.0-preview1
。
每个单元测试 class 继承一次性 class 创建一个新的内存数据库,其父级可以使用。
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
,但这似乎没有任何改变。
我使用 xUnit 夹具为我的所有测试实例提供保存数据库上下文。这样我就避免了每次测试的上下文创建开销,从而大大加快了构建服务器的速度。
我正在使用 Entity Framework Core 2.0-preview1
和 InMemory 2.0-preview1
。
每个单元测试 class 继承一次性 class 创建一个新的内存数据库,其父级可以使用。
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
,但这似乎没有任何改变。
我使用 xUnit 夹具为我的所有测试实例提供保存数据库上下文。这样我就避免了每次测试的上下文创建开销,从而大大加快了构建服务器的速度。