【问题标题】:How do i stop log4net from logging when running tests in NUnit TestRunner在 NUnit TestRunner 中运行测试时如何停止 log4net 的日志记录
【发布时间】:2009-11-13 00:27:59
【问题描述】:

让我先解释一下我的场景:

  1. 我有大约 2000 个测试要运行,在 NUnit 中大约需要 30 秒
  2. 我想知道什么是花时间
  3. 我打开 Ants Profiler,让它分析 NUnit TestRunner,并将我的测试 dll 加载到 TestRunner 中
  4. 然后我运行测试...

但是,在进行分析的同时运行测试需要 很多 更长的时间(运行所有测试大约需要 5 分钟,而不是 30 秒)。当我在 Ants Profiler 中查看时间时,似乎很多地方都在调用 log4net,这似乎占用了时间。

所以,这是我的问题:当我以这种方式运行测试时,如何停止 log4net 记录内容?

我可以找到 3 个配置文件:

  1. 在 test dll 文件夹中,有一个 config.log4net 文件。我已经把 放在那里,并删除了所有的 appender 部分
  2. 在测试运行程序文件夹中,有一个 nunit.exe.config 和一个 nunit-console.exe.config 文件 - 我已将 放在这两个文件中。
  3. 我在 ants profiler 文件夹中找不到任何配置文件。

这似乎都不起作用,查看配置文件结果我可以看到 log4net 被调用,它肯定是调用方法来输出日志信息。

【问题讨论】:

  • 接受的答案是为所有测试类创建一个基类,其中日志记录被关闭。

标签: log4net profiling redgate


【解决方案1】:

在测试设置中,获取根记录器并将其日志级别设置为关闭。

【讨论】:

  • 日志是用xml配置的。理论上我可以在设置方法中将级别设置为关闭,但是有很多固定装置(和很多设置方法)。我希望能够配置记录器一次。这里建议的方法意味着我必须重新编译我的测试项目以更改配置,并且所有测试项目都必须手动关闭日志记录。似乎应该有一种更简单的方法来做到这一点。
  • Log4* 不是为测试而设计的:(我的解决方案是为所有测试提供一个通用基类(它还定义了一些额外的断言)并且可以执行这些技巧。
  • 哦,打开一个针对 log4net 的错误报告。也许它们可以让您读取多个配置文件。使用 log4j,我可以说 -Dlog4j.configuration=log4j-null.xml 来选择我想要全局的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
相关资源
最近更新 更多