Integrationtest IHost TestServer 不会关闭

Integrationtest IHost TestServer won't shutdown

我使用 xunit 为 aspnetcore 3.1 应用程序编写了一些集成测试。 测试显示成功,但进程仍然运行。一段时间后我得到:

The process dotnet:1234 has finished running tests assigned to it, but is still running. Possible reasons are incorrect asynchronous code or lengthy test resource disposal [...]

此行为甚至会显示为样板代码,例如:

        [Fact]
        public async Task TestServer()
        {
            var hostBuilder = new HostBuilder()
                .ConfigureWebHost(webHost =>
                {
                    // Add TestServer
                    webHost.UseTestServer();
                    webHost.Configure(app => app.Run(async ctx =>
                        await ctx.Response.WriteAsync("Hello World!")));
                    
                });

            // Build and start the IHost
            var host = await hostBuilder.StartAsync();
        }

如果我添加 await host.StopAsync()...

我在 Ubuntu 18.04 机器上。

  1. 尝试在测试结束时处理主机。很可能是因为你没有处理一次性资源导致的错误。
  2. 我建议您使用 WebApplicationFactory 而不是 HostBuilder 进行测试。您可以在 docs
  3. 中找到更多信息