1. 测试项目必须:
引用 Microsoft.AspNetCore.Mvc.Testing 包。
2. 使用默认 WebApplicationFactory 的基本测试
ASP.NET Core 6 引入了 WebApplication,它消除了对 Startup 类的需求。 若要在没有 Startup 类的情况下使用 WebApplicationFactory 进行测试,ASP.NET Core 6 应用需要通过以下一种方式向测试项目公开隐式定义的 Program 类:
var builder = WebApplication.CreateBuilder(args);
// ... Configure services, routes, etc.
app.Run();
+ public partial class Program { }
3. 在 Web 应用程序中进行更改后,测试项目现在可以将 Program 类用于 WebApplicationFactory。
[Fact]
public async Task HelloWorldTest()
{
// 该方式在 ASP.NET Core 3.1 中同样适用,只需要将 Program 修改为 Web项目的 Startup 类即可。
var application = new WebApplicationFactory<Program>()
.WithWebHostBuilder(builder =>
{
// ... Configure test services
});
var client = application.CreateClient();
//...
}
4. 自定义 WebApplicationFactory
一个测试项目可以对多个Web项目进行测试,通过从 WebApplicationFactory 来创建一个或多个自定义工厂,可以独立于测试类创建 Web 主机配置: