当 vstest.console.exe 运行单元测试时,TraceSource 消息未记录到 trx 文件中

本文关键字:记录 消息 trx 文件 TraceSource console vstest exe 运行 单元测试 | 更新日期: 2023-09-27 18:37:11

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

我尝试用静态跟踪替换跟踪源,这实际上有效,日志显示在trx文件中。知道为什么来自跟踪源的日志不显示而不是在使用跟踪时显示吗?

我对跟踪源的用法如下:

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");

应用程序配置具有:

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

提前谢谢。

当 vstest.console.exe 运行单元测试时,TraceSource 消息未记录到 trx 文件中

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

不过,非静态类中的静态跟踪源可以工作。