【问题标题】:TraceSource messages not being logged to the trx file when unit tests are run by vstest.console.exe当 vstest.console.exe 运行单元测试时,TraceSource 消息未记录到 trx 文件
【发布时间】:2016-06-16 05:13:40
【问题描述】:

我有一个使用 vstest.console.exe 运行的单元测试 dll。在单元测试中,我使用TraceSource 记录了一些调试信息。当我在 Visual Studio 中运行单元测试时,我可以在输出窗口中看到日志,但是当我通过带有 /Logger:trx 选项的 vstest.console.exe 运行它时,输出日志不存在。

我尝试用静态 Trace 替换 TraceSource,这确实有效,并且日志显示在 trx 文件中。知道为什么 TraceSource 中的日志不显示而不是在使用 Trace 时显示吗?

我对 TraceSource 的使用如下:

TraceSource traceSource = new TraceSource("TraceSourceTraceLogger");
traceSource.Listeners.Clear();
traceSource.Listeners.Add(new DefaultTraceListener());
traceSource.Listeners.Add(new ConsoleTraceListener());
var sourceSwitch = new SourceSwitch("TraceSourceTraceLoggerSwitch") { Level = SourceLevels.All };
traceSource.Switch = sourceSwitch;
traceSource.TraceInformation("This is a debug message");

App.config 有:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" />
  </system.diagnostics>
</configuration>

提前致谢。

【问题讨论】:

    标签: c# .net unit-testing visual-studio-2012 tracesource


    【解决方案1】:

    问题原来是我使用的 TraceSource 是静态类中的静态实例。

    非静态类中的静态 TraceSource 可以工作。

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 2016-08-24
      • 2015-08-20
      • 2018-03-23
      • 2017-09-23
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 2021-04-21
      相关资源
      最近更新 更多