不在單元測試中共享UseInMemoryDatabase上下文

asp.net-core c# entity-framework-core sql xunit

我正在使用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但這似乎沒有任何改變。提前致謝。

一般承認的答案

我使用xUnit fixture為我的所有測試實例提供了save數據庫上下文。這樣我就避免了每次測試的上下文創建開銷,這大大加快了構建服務器的速度。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow