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 机器上。
- 尝试在测试结束时处理主机。很可能是因为你没有处理一次性资源导致的错误。
- 我建议您使用 WebApplicationFactory 而不是 HostBuilder 进行测试。您可以在 docs
中找到更多信息
我使用 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 机器上。
- 尝试在测试结束时处理主机。很可能是因为你没有处理一次性资源导致的错误。
- 我建议您使用 WebApplicationFactory 而不是 HostBuilder 进行测试。您可以在 docs 中找到更多信息