Тесты, выполняющиеся одновременно, завершаются с ошибкой «Экземпляр типа сущности ... не может быть отслежен» - PullRequest
0 голосов
/ 16 мая 2018

Я запускаю несколько модульных тестов для проекта asp.net core 2.0, используя ядро ​​EF и базу данных в памяти.

Я создаю базу данных следующим образом:

var serviceProvider = new ServiceCollection()
        .AddEntityFrameworkInMemoryDatabase()
        .BuildServiceProvider();
var builder = new DbContextOptionsBuilder<TDatabaseContext>();
builder.UseInMemoryDatabase(Guid.NewGuid().ToString())
    .UseInternalServiceProvider(serviceProvider)
    .EnableSensitiveDataLogging();
var context = new MyDatabaseContext(builder.Options);

Согласно этого поста (Как изолировать базу данных EF InMemory для теста XUnit) , используя отдельного поставщика услуг и используя разные имена для каждого экземпляра БД в памяти, должны гарантировать, что каждый тест имеет свой собственныйбаза данных, которая не используется другими тестами.

Однако мои тесты работают нормально, когда я запускаю их по отдельности, но не выполняются, если я запускаю их все вместе, с такими ошибками:

System.InvalidOperationException: экземпляр типа сущности SomeModelObject не может быть отслежен, поскольку другой экземпляр со значением ключа Id: 1 уже отслеживается.При подключении существующих объектов убедитесь, что подключен только один экземпляр объекта с данным значением ключа.

Есть ли что-то еще, что я должен сделать, чтобы убедиться, что контекст БД не является общим для разныхтесты?

...