Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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# 使用ASP.NET内核和NUnit实现集成测试_C#_Asp.net Core_Nunit_Integration Testing - Fatal编程技术网

C# 使用ASP.NET内核和NUnit实现集成测试

C# 使用ASP.NET内核和NUnit实现集成测试,c#,asp.net-core,nunit,integration-testing,C#,Asp.net Core,Nunit,Integration Testing,我对使用NUnit与Asp core 2.2进行集成测试是新手,我已经有了core RESTful Api,但不知道如何配置NUnit来实现集成测试。 通常我使用迁移文件夹中的配置文件来实现它,如下所示,但ASP Core 2.2中不再存在,我不知道新的替代方案是什么 var configuration = new Migrations.ApplicationDbContextModelSnapshot(); var migrator = new Migrator

我对使用NUnit与Asp core 2.2进行集成测试是新手,我已经有了core RESTful Api,但不知道如何配置NUnit来实现集成测试。 通常我使用迁移文件夹中的配置文件来实现它,如下所示,但ASP Core 2.2中不再存在,我不知道新的替代方案是什么

        var configuration = new Migrations.ApplicationDbContextModelSnapshot();
        var migrator = new Migrator(configuration);
        migrator.Update();

因此,如果您不理解我的问题,我只需要一个明确的链接就可以将NUnit集成测试与.Net Core 2.2结合使用。

集成测试不应该连接到真实的数据库。集成测试是为了确保组件正确地一起工作,而不是任何具体的后端实现。因此,您应该使用efcore的内存中数据库提供程序。这将自动迁移—实际上,它只是在每次实例化数据库时在内存中设置数据库外观的表示,因此无需采取任何进一步的操作。 请记住,EF-in-memory数据库也是一个非关系数据库,因此,如果希望保持实体的关系完整性(如外键),则应使用SqlLite-in-memory数据库。以下是一个例子:

var connection = new SqliteConnection("Data Source=:memory:");
services.AddDbContext<WebApi1DbContext>(options => options.UseSqlite(connection));

数据库迁移与集成测试有什么关系?你要求另一种选择,但你的问题并不清楚你想要什么样的选择。您能解释一下您遇到的具体问题吗?我在应用程序中使用迁移创建另一个最新的DB更新来测试它,但这只是测试框架。你想用什么就用什么。一般来说,它与单元测试的构造方式无关。单元测试通常需要使用模拟,因为您不能使用实际的依赖项。这样做会使您的测试成为集成测试,而不是单元测试。我对NUnit不太熟悉,但是如果它本身没有模拟功能,你可能需要一个额外的库来实现这个目的,比如Moq。对不起,我忘记了问题的上下文,误解了你的评论。我会留下我以前的评论,因为这是一个很好的信息。就集成测试而言,NUnit也是如此。当然,您可以在这里使用任何测试框架。我说的是集成测试不应该连接到真实的东西。这是关于显示所有组件一起工作。你可以使用模拟。真正的东西可能会下降,有时会有明显的延迟。测试需要快速,否则它们的有用性就会消失。至少在这种情况下,您的基础架构是否正确并不重要。您希望确保代码的功能单元组合在一起时能够正确工作。您可以模拟EF上下文,但这将是一项繁重的工作,而且使用内存提供程序更简单、更简单。这就是为什么推荐它。然而,其他的东西应该被模仿,除非已经有一个类似的虚拟提供者可用。例如,对于日志记录,您可以只使用调试或控制台提供程序。任何外部依赖项或基础结构约束都表示测试的失败点,您只希望在出现实际代码问题时测试失败,而不仅仅是一些连接问题。