ASP.NET Core 6.0 集成测试

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 主机配置:

5. 官方文档

docs.microsoft.com

posted @ 2022-04-14 10:58  shenghuotaiai  阅读(475)  评论(0编辑  收藏  举报