.NET Core: xUnit.net集成测试中如何输出控制台日志

无论是使用 asp.net core 自带的 console 日志,还是使用 serilog 的 Serilog.Sinks.Console ,都无法在 dotnet test 的控制台输出日志,请问如何解决这个问题?


一只名叫tom的猫
浏览 956回答 1
1回答

叮当猫咪

安装 nuget 包&nbsp;Serilog.Sinks.XUnitdotnet&nbsp;add&nbsp;package&nbsp;Serilog.Sinks.XUnit在 CustomWebApplicationFactory 类中实现 ConfigureLogging() 方法public&nbsp;class&nbsp;CustomWebApplicationFactory<TStartup>&nbsp;:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;WebApplicationFactory<TStartup>&nbsp;where&nbsp;TStartup&nbsp;:&nbsp;class{&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;ConfigureLogging(ITestOutputHelper&nbsp;outputHelper)&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.Logger&nbsp;=&nbsp;new&nbsp;LoggerConfiguration() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WriteTo.TestOutput(outputHelper,&nbsp;LogEventLevel.Information) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CreateLogger(); &nbsp;&nbsp;&nbsp;&nbsp;} }在测试类的构造函数中通过依赖注入获取 ITestOutputHelper ,然后调用上面的 ConfigureLogging() 方法配置 Serilog 将日志输出到 ITestOutputHelperpublic&nbsp;class&nbsp;WebApiTest&nbsp;:&nbsp;IClassFixture<CustomWebApplicationFactory<Startup>> {&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;readonly&nbsp;HttpClient&nbsp;_httpClient;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WebApiTest(CustomWebApplicationFactory<Startup>&nbsp;factory,&nbsp;ITestOutputHelper&nbsp;testOutput)&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory.ConfigureLogging(testOutput); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_httpClient&nbsp;=&nbsp;factory.CreateClient(); &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;//...}
打开App,查看更多内容
随时随地看视频慕课网APP