首页 新闻 会员 周边 捐助

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

0
悬赏园豆:30 [已解决问题] 解决于 2018-06-29 18:46

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

dudu的主页 dudu | 高人七级 | 园豆:30778
提问于:2018-06-29 13:36
< >
分享
最佳答案
0

安装 nuget 包 Serilog.Sinks.XUnit

dotnet add package Serilog.Sinks.XUnit

在 CustomWebApplicationFactory 类中实现 ConfigureLogging() 方法

public class CustomWebApplicationFactory<TStartup> : 
    WebApplicationFactory<TStartup> where TStartup : class
{
    public void ConfigureLogging(ITestOutputHelper outputHelper)
    {
        Log.Logger = new LoggerConfiguration()
            .WriteTo.TestOutput(outputHelper, LogEventLevel.Information)
            .CreateLogger();
    }
}

在测试类的构造函数中通过依赖注入获取 ITestOutputHelper ,然后调用上面的 ConfigureLogging() 方法配置 Serilog 将日志输出到 ITestOutputHelper

public class WebApiTest : IClassFixture<CustomWebApplicationFactory<Startup>>
{
    private readonly HttpClient _httpClient;

    public WebApiTest(CustomWebApplicationFactory<Startup> factory, ITestOutputHelper testOutput)
    {
        factory.ConfigureLogging(testOutput);
        _httpClient = factory.CreateClient();
    }
        
    //...
}
dudu | 高人七级 |园豆:30778 | 2018-06-29 18:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册