在 InMemory 数据库上使用 EnsureDeleted() 时 XUnit 测试停止 运行

XUnit Tests Stop Running When Using EnsureDeleted() on InMemory Database

在我的 Xunit 测试启动期间,我正在为我的 entity framework 数据库上下文定义依赖注入,使用一个名为 FakeMyDbContext.[=13= 的带有假数据的假版本]

 public void ConfigureInMemoryDatabases(IServiceCollection services)
    {
        services.AddScoped(_ =>
        {
            var smtrOptions = new DbContextOptionsBuilder<MyDbContext>()
                               .UseInMemoryDatabase(databaseName: $"MyDb_{Guid.NewGuid()}")
                               .Options;

            return new FakeMyDbContext(smtrOptions) as MyDbContext;
        });
    }

我有多个测试 运行 我的服务使用这个数据库上下文,但是只有一个 运行 。我已经在 FakeMyDbContext class:

的处置中找到以下行的问题
  public override void Dispose()
  {
       base.Dispose();
       Database.EnsureDeleted();
  }

如果我删除 Database.EnsureDeleted(),那么所有测试 运行。如果我把它留在里面,那么只有一个测试 运行s。我不确定为什么会发生这种情况,因为我没有看到任何错误,并且每个上下文实例都有一个唯一的数据库名称(附加了 guid)。

我的问题的原因是我在处理上下文后调用了 EnsureDeleted。

dispose 方法应该如下所示

 public override void Dispose()
  {
       Database.EnsureDeleted();
       base.Dispose();
  }