我正在使用.NET Core 2.2的IHostBuilder(通用主机构建器)来构建一个控制台应用程序,作为BackgroundService(IHostedService)运行消息流应用。 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-2.2
这不是通常用于托管ASP.NET Core Web应用程序的IWebHostBuilder。
我想构建一些基本的集成测试,以验证优雅的关闭和IoC配置。我希望启动一个TestServer来托管我的IHostBuilder主机。 我不需要提供任何请求服务。
我已经使用了Microsoft.AspNetCore.TestHost中的IWebHostBuilder和TestServer进行了这种操作。但是,IHostBuilder没有支持,只有IWebHostBuilder。https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.testhost.testserver.-ctor?view=aspnetcore-2.2#Microsoft_AspNetCore_TestHost_TestServer__ctor_Microsoft_AspNetCore_Hosting_IWebHostBuilder_
我知道在.NET Core 3.0中,IHostBuilder将替代IWebHostBuilder,并且TestServer将支持此操作。 但是我正在尝试在.NET Core 2.2中实现这一点的方法。
RunAsync()
运行它并测试你想要测试的任何内容。唯一的缺点是你需要在测试应用程序中重复所有的DI注册和配置。 - OlegIIRepository<>
)和所有控制器。这应该足够了。而且你不需要运行整个应用程序来完成这个测试。 - Vlad DXProgram.cs
和IoC注册文件) - zaitsman