在我们的生产应用程序中,我们有一个自定义Trace Listener,但在测试应用程序的特定单元时不存在。所以我想轻松禁用跟踪。如果我不这样做,我将从默认跟踪侦听器收到错误,说格式字符串不正确。
我可以通过编码来做到这一点(这有效):
[Setup]
public void Setup()
{
System.Diagnostics.Trace.Listeners.Clear();
}
但找到所有[设置]并添加代码行是很繁琐的。相反,我想修改配置文件。
因此,对于我的测试(test.dll),我有一个配置文件test.dll.config。它看起来像:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace>
<listeners>
<clear/>
</listeners>
</trace>
</system.diagnostics>
<appSettings>
<add key="StartingMonthColumn" value="7"/>
<add key="CategoryHeadingColumn" value="1"/>
</appSettings>
</configuration>
但这不起作用。我知道配置已加载,因为我可以读取StartingMonthColumn的值。
但是system.diagnostics部分似乎被忽略了。
答案 0 :(得分:0)
NUnit使用test.dll.config文件进行一些操作。跟踪没有任何作用。如果您修改了NUnit自己的配置文件,那么您可能会有一些运气,这正是.NET所关注的。作为测试,修改控制台运行器的配置。使用命令行选项指定测试应在同一进程中运行 - / process:Single将在NUnit 2.6.4和3.0+中运行。如果这样做,您还必须修改两个NUnit代理的配置,以便在流程用完时。
另一种基于代码的方法是为每个程序集创建一个顶级SetUpFixture,并将禁用代码放在SetUp(2.6.4)或OneTimeSetUp(3.x)方法中。