1

在我的NUnit 2.6测试中,我曾在Visual Studio的输出窗口的Tests部分中看到log4net日志消息。由于我切换到NUnit 3.2,它们不再显示,这是非常不方便的。我尝试过搜索,我想出的最佳“解决方案”是将所有内容转储到调试字符串中,可以通过SysInternals中的DebugView实用程序查看,也可以在实际调试测试时查看 - 然后将消息显示在调试部分。但是,我真的很想在Visual Studio中看到我的日志行,即使在不进行调试时也是如此。有任何想法吗? Visual Studio 2015.这是我当前的log4net配置:log4net和NUnit 3.2以及控制台输出VS

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

回答

1

NUnit V2捕获log4net输出并将其转换为NUnit事件。对于3.0,我们认定这已经超出了NUnit的范围,并将其留在log4net中以显示内容。在NUnit控制台运行器下运行时,这种方式可以正常工作,但是它在VS适配器下有一定的局限性。

我认为我们可以提供一个appender或者一个引擎扩展,你可以使用它来获得log4net输出为NUnit输出事件的形式。这是一个志愿写它的人的问题。如果你认为这很重要,你可以在github上提出问题。

+0

谢谢,在github上提出了这个问题。我认为这是相当重要的,因为我看到不少人抱怨它... – Andre

+0

感谢您的问题...没有一个抱怨者得到了一个。:-) – Charlie

+0

链接到问题 - https://github.com/NUnit的/ NUnit的/问题/ 1588 –

0

对于NUnit的V3,你可以做到这一点与这行代码:

Console.SetOut(TestContext.Progress); 

log4net的配置为使用是ConsoleAppender。