.net 无法在NUnit中禁用System.Diagnostics.Trace
在我们的生产应用程序中,我们有一个自定义跟踪侦听器,但在测试应用程序的特定单元时,它并不存在。所以我想轻松地禁用跟踪。如果不这样做,我将从默认跟踪侦听器中得到一个错误,指出格式字符串不正确 我可以通过编码来实现这一点(这是可行的): 但是找到所有的[Setup]并添加代码行是很乏味的。相反,我想修改配置文件 因此,对于我的测试(test.dll),我有一个配置文件test.dll.config。它看起来像:.net 无法在NUnit中禁用System.Diagnostics.Trace,.net,nunit,trace,system.diagnostics,.net,Nunit,Trace,System.diagnostics,在我们的生产应用程序中,我们有一个自定义跟踪侦听器,但在测试应用程序的特定单元时,它并不存在。所以我想轻松地禁用跟踪。如果不这样做,我将从默认跟踪侦听器中得到一个错误,指出格式字符串不正确 我可以通过编码来实现这一点(这是可行的): 但是找到所有的[Setup]并添加代码行是很乏味的。相反,我想修改配置文件 因此,对于我的测试(test.dll),我有一个配置文件test.dll.config。它看起来像: <?xml version="1.0" encoding="utf-8" ?>
<?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部分似乎被忽略了。NUnit将test.dll.config文件用于一些事情。它与跟踪无关。如果您修改了NUnit自己的配置文件,您可能会有一些运气,这正是.NET所关注的。作为测试,修改console runner的配置。使用命令行选项指定测试应在同一进程中运行-/process:Single将在NUnit 2.6.4和3.0+中运行。如果这样做有效,您还必须在进程用完时修改两个NUnit代理的配置
另一种基于代码的方法是为每个程序集创建一个顶级SetUpFixture,并将禁用代码放在SetUp(2.6.4)或OneTimeSetUp(3.x)方法中。我已将system.diagnostics部分添加到nunit.exe.config、nunit-agent.exe.config、nunit-agent-x86.exe.config、nunit-console.exe.config、,nunit-console-x86.exe.config和nunit-x86.exe.config都没有任何运气。正如我上面提到的,我不想禁用使用代码。您使用的是NUnit的哪个版本?2.5.10。我想我应该试试最新的3.2,我下载了它却发现没有GUI。在GitHub中找到GUI。下载并编译了它。尝试运行我的测试dll,但收到消息“在xxx中找不到合适的测试”,所以我想我需要做一些事情才能迁移到3.2。我现在没有时间。我们有工作要做。我们创建了一个带有静态构造函数的类,该类清除所有现有跟踪侦听器。然后,它检查配置设置,并仅在配置项存在时添加侦听器。因为它不在单元测试配置文件中,所以在单元测试期间没有跟踪侦听器,一切都很好。2.5.10确实很旧。您可以尝试2.6.4,这是最新的V2版本。在2.5.10中,我们添加了一个自己的侦听器,确保将您的所有侦听器都保留在原位。那么久以前,我们甚至可能在nunit配置中有一些东西控制着它-我手头没有一个副本可供检查。
<?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>