using System.Diagnostics; using HttpClientStudy.Core.Utilities; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; //集成 asp.net core 引用 TestHost(3.0+) using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; using Xunit; using Xunit.DependencyInjection; //如果使用最小API,则引用 using Xunit.DependencyInjection.AspNetCoreTesting; using Xunit.DependencyInjection.Logging; namespace HttpClientStudy.UnitTest { /// /// 依赖注入框架:Xunit.DependencyInjection, 必备设置类 /// public class Startup { /// /// 创建主机:可选,一般不用 /// /// public IHostBuilder CreateHostBuilder() { return Host.CreateDefaultBuilder(); } /// /// 配置主机:可选(集成Asp.Net Core时,配置主机) /// /// public void ConfigureHost(IHostBuilder hostBuilder) { //确保启动 webapi 项目 StartupUtility.StartWebApiProject(); hostBuilder //主机配置设置 .ConfigureHostConfiguration(builder => { }) //应用配置设置 .ConfigureAppConfiguration((context, builder) => { }) //配置Web主机 .ConfigureWebHost(webHostBuilder => { webHostBuilder //测试主机,集成测试使用 .UseTestServer(options => { options.PreserveExecutionContext = true; }) .ConfigureTestServices(services => { services.AddSerilog((services, loggerConfiguration) => { loggerConfiguration .WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day) .WriteTo.Console(); }); }) .UseStartup() ; }); } /// /// 注册服务:必须 /// /// public void ConfigureServices(IServiceCollection services, HostBuilderContext context) { services.BuildServiceProvider().GetRequiredService().ApplicationStopping.Register(() => { }); } private class WebApiStartup { public void ConfigureServices(IServiceCollection services) { services.AddLogging(lb => lb.AddXunitOutput()); } public void Configure(IApplicationBuilder app) { } } } }