我有一个 DLL,它有点复杂,我正在编写测试。大多数被测试的类都有自己的TraceSource
对象,用于输出跟踪信息。
namespace MyDll
{
public class Class1
{
static TraceSource tracing = new TraceSource(nameof(Class1));
//Instance members and functions...
}
public class Class2
{
static TraceSource tracing = new TraceSource(nameof(Class2));
//Instance members and functions...
}
public class Class3
{
static TraceSource tracing = new TraceSource(nameof(Class3));
//Instance members and functions...
}
}
项目内部MyDll
是一个App.config
文件,它ConsoleTraceListener
向所有TraceSource
.
<configuration>
<system.diagnostics>
<sources>
<source name="Class1"
switchName="sourceSwitch"
switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="console"/>
</listeners>
</source>
<source name="Class2"
switchName="sourceSwitch"
switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="console"/>
</listeners>
</source>
<source name="Class3"
switchName="sourceSwitch"
switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="console"/>
</listeners>
</source>
</sources>
<switches>
<add name="sourceSwitch" value="Verbose"/>
</switches>
<sharedListeners>
<add name="console"
type="System.Diagnostics.ConsoleTraceListener">
<filter type="System.Diagnostics.EventTypeFilter"
initializeData="Verbose"/>
</add>
</sharedListeners>
</system.diagnostics>
</configuration>
App.config
配置为始终复制到输出目录。我不确定这是否相关。
这就是问题所在:如果我运行 1 个测试,我会从测试的输出中获得所有跟踪信息。但是,如果我运行所有测试,则只有第一个测试运行会跟踪被测代码。所有其他测试都没有任何输出。
如何让 MSTest 输出所有TraceSource
测试的所有跟踪信息?