输出到dotnet测试的ILogger

时间:2019-03-26 08:53:49

标签: unit-testing logging .net-core

当我这样做

LoggerFactory
  .Create(builder => builder.AddTraceSource(nameof(TestName)).AddConsole())
  .CreateLogger(nameof(TestName))
  .LogError("oh no");

我希望在dotnet test --verbosity detailed输出中看到“哦不”。但事实并非如此。如何获取ILogger,使其输出在测试运行输出中可见?

我正在使用Microsoft.Extensions.Logging 3.0.0-preview3.19153.1和.NET Core SDK 2.1.500。

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为控制台日志记录是在后台线程中执行的。因此,要“修复”此问题,请尝试使用dispose services

((IDisposable) services)?.Dispose();

或至少give it some time可以处理-睡眠一秒钟:

LoggerFactory
  .Create(builder => builder.AddTraceSource(nameof(TestName)).AddConsole())
  .CreateLogger(nameof(TestName))
  .LogError("oh no");

System.Threading.Thread.Sleep(1000);