Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 无法在NUnit中禁用System.Diagnostics.Trace_.net_Nunit_Trace_System.diagnostics - Fatal编程技术网

.net 无法在NUnit中禁用System.Diagnostics.Trace

.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" ?>

在我们的生产应用程序中,我们有一个自定义跟踪侦听器,但在测试应用程序的特定单元时,它并不存在。所以我想轻松地禁用跟踪。如果不这样做,我将从默认跟踪侦听器中得到一个错误,指出格式字符串不正确

我可以通过编码来实现这一点(这是可行的):

但是找到所有的[Setup]并添加代码行是很乏味的。相反,我想修改配置文件

因此,对于我的测试(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部分似乎被忽略了。

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>