在我的NUnit 2.6测试中,我曾经在Visual Studio的输出窗口中的Tests部分中看到log4net日志消息。由于我切换到NUnit 3.2,它们不再显示,这非常不方便。我尝试搜索,我想出的最好的“解决方案”是将所有内容转储到调试字符串中,可以通过SysInternals的DebugView实用程序查看,也可以在我实际调试测试时查看 - 然后消息显示在Debug部分中。但是,即使没有调试,我也希望在Visual Studio中看到我的日志行。有任何想法吗? Visual Studio 2015.这是我当前的log4net配置:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="DebugAppender" type="log4net.Appender.DebugAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="OutputDebugStringAppender" />
<appender-ref ref="DebugAppender" />
</root>
</log4net>
</configuration>
答案 0 :(得分:1)
NUnit V2捕获了log4net输出并将其转换为NUnit事件。对于3.0,我们认为这超出了NUnit的范围,并将其留给log4net来显示内容。在NUnit控制台运行程序下运行时,这样可以正常工作,但在VS适配器下它有点受限制。
我认为我们提供一个appender或引擎扩展是合理的,你可以使用它来将log4net输出转换为NUnit输出事件的形式。这是一个志愿写作的人的问题。如果您认为这很重要,可以在github上提出问题。
答案 1 :(得分:0)
对于NUnit v3,您可以使用以下代码行完成此操作:
Console.SetOut(TestContext.Progress);
Log4Net配置为使用ConsoleAppender。
答案 2 :(得分:0)
对我来说,解决方案是将ConsoleAppender
的目标属性设置为“ Console.Out”:
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender, log4net">
<target value="Console.Out"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd MMM yyyy HH:mm:ss} %level [%thread] %method - %message%n" />
</layout>
</appender>
不需要设置为TestContext.Progress
。
这与NUnit 3.11和R#testrunner一起使用。
PS。注意我们使用了不同的追加器。因为它是在我的主SERP中出现的,所以无论如何我都将其留在这里。 :)