Kri*_*tel 9 logging integration-testing unit-testing xunit serilog
我在我的项目中使用 serilog 使用静态记录器方法 - 能够在我的类库上调用 Log.X 而不是在任何地方注入记录器类,这很好也很容易。
但是,当涉及到单元/集成测试时,如果测试失败,那么查看类库中的错误日志将非常有益(对于集成测试更是如此)。
因为我没有将 ILogger 注入我的类(由于使用静态记录器),所以我无法创建将输出写入测试日志的模拟测试记录器。
有没有人设法使用 Serilog 全局(静态)记录器将消息输出到 XUnit?
小智 12
该Serilog.Sinks.XUnit NuGet包可以很容易地做到这一点。在您的项目中引用 nuget。然后就可以在测试中使用静态记录器了:
using Serilog;
using Xunit;
using Xunit.Abstractions;
namespace XunitToSerilog
{
public class SampleTest
{
public SampleTest(ITestOutputHelper output)
{
Log.Logger = new LoggerConfiguration()
// add the xunit test output sink to the serilog logger
// https://github.com/trbenning/serilog-sinks-xunit#serilog-sinks-xunit
.WriteTo.TestOutput(output)
.CreateLogger();
}
[Fact]
public void Test1()
{
Log.Information("goes to test output");
}
}
}
Run Code Online (Sandbox Code Playgroud)