不在单元测试中共享UseInMemoryDatabase上下文

时间:2017-05-16 15:13:13

标签: c# sql asp.net-core entity-framework-core xunit

我正在将实体框架核心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,但这似乎没有任何改变。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我使用xUnit fixture为我的所有测试实例提供了save数据库上下文。这样我就避免了每次测试的上下文创建开销,从而大大提高了构建服务器的速度。