首页 > 解决方案 > 从 xUnit 调试 .NET Core API

问题描述

我已经开发了两个基于 .NET Core 2.1 的项目。

  1. 网络API
  2. xUnit

WebAPI 使用 IIS 作为托管平台。xUnit 使用 HttpClient 类连接到 WebAPI 以使用 http。

我尝试连接到w3wp服务以捕获控制器中的 Get 方法,但没有成功。另外,我在WebAPI项目中启动了另一个环境并运行了Debug,但这并没有帮助。

谁知道问题出在哪里以及如何解决?

标签: .netiisasp.net-core-webapixunit.net

解决方案


关于如何做到这一点,docs.microsoft.com 上有一个很好的指南:https ://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.1

基本上,您需要将 Microsoft.AspNetCore.Mvc.Testing 包安装到您的测试项目中,并在您的测试项目中从 WebApplicationFactory 派生一个“测试应用程序工厂”类。然后在每个测试类中,您需要创建该类的一个实例,然后使用 WebApplicationFactory.CreateClient 来获取 HttpClient 的一个实例。然后根据需要使用 HttpClient 实例调用 API 端点。

本质上,WebAPI 应用程序将与您的测试在同一进程中运行,这大大简化了调试。

您可能还想为您的被测应用程序添加一个“测试”环境配置文件(例如 appsettings.Test.json),并将 WebApplicationFactory 配置为使用相同的环境进行测试运行,这样测试运行就不会触及您的开发环境(包括数据库),并在“测试应用工厂”类中编写一些代码来重新创建/清理测试中使用的测试数据库或其他存储。


推荐阅读