Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UseInMemoryDatabase上下文是';t在单元测试中共享_C#_Sql_Asp.net Core_Entity Framework Core_Xunit - Fatal编程技术网

C# UseInMemoryDatabase上下文是';t在单元测试中共享

C# UseInMemoryDatabase上下文是';t在单元测试中共享,c#,sql,asp.net-core,entity-framework-core,xunit,C#,Sql,Asp.net Core,Entity Framework Core,Xunit,我正在使用实体框架核心2.0-preview1和内存2.0-preview1。 每个单元测试类继承一个一次性类,该类创建一个新的内存中数据库,其父级可以使用该数据库 public构造函数() { var services=newservicecolection(); services.AddEntityFrameworkInMemoryDatabase()的 .AddDbContext(o=>o.UseInMemoryDatabase(“Test”); var serviceProvider=s

我正在使用实体框架核心
2.0-preview1
和内存
2.0-preview1
。 每个单元测试类继承一个一次性类,该类创建一个新的内存中数据库,其父级可以使用该数据库

public构造函数()
{
var services=newservicecolection();
services.AddEntityFrameworkInMemoryDatabase()的
.AddDbContext(o=>o.UseInMemoryDatabase(“Test”);
var serviceProvider=services.BuildServiceProvider();
Context=serviceProvider.GetRequiredService();
}
给数据库命名的问题是它不能在多个测试之间共享,因此每个测试都会创建一个新的上下文,导致每个单元测试持续几秒钟,这对于我的构建服务器来说是不可接受的。我找不到太多的文档说明为什么在2.0中改变了这一点,或者如何克服这一点。
我已经尝试使用新的
.useTransitInMemoryDatabase
,但这似乎没有任何改变。

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

如果在单元测试中共享相同的db上下文,如何确保每个测试都有特定的前置条件和断言后置条件?我会跟踪添加到上下文中的实体,并在每次测试后清除它们,这使我能够绕过每个请求的数据库初始化时间。您是否尝试过使用静态构造函数?使用了什么测试框架?设置一个fixture来提供DBIn xUnit,以便在测试中共享对象,我们使用构造函数来创建整个测试类中可用的共享属性。@peter.fr需要一个fixture,因为它不仅是类实例所必需的,而且是整个命名空间所必需的。