【发布时间】:2020-07-08 09:04:33
【问题描述】:
ASP.NET Core 具有WebApplicationFactory<T>,可用于启动测试主机以进行集成测试。
非 ASP.NET Core 项目是否有等效项?例如,我正在考虑“.NET Core Worker 服务模板”。它没有对 ASP.NET Core 的任何引用,但它使用通用主机。
例如,我有一个像这样的项目,作为 Windows 服务托管。我想像为 ASP.NET Core 项目一样轻松地为此创建集成测试(我可以重用 Startup 文件中的 DI,因此我不需要在测试中进行设置。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, builder) =>
{
builder.AddAppSettings(context.HostingEnvironment.EnvironmentName);
})
.ConfigureServices((hostContext, services) =>
{
// Loads of configuration (DI, Logging, Messaging, etc) removed for brevity
// ...
})
.UseWindowsService();
}
在这种情况下,服务会侦听消息(使用 Masstransit),因此没有 HostedService 设置。但在其他情况下也可能存在。
【问题讨论】:
标签: c# .net .net-core asp.net-core-3.1 .net-core-3.1