Pruebas log4net y nunit, ejemplo más básico

Pruebas log4net y nunit, ejemplo más básico

El problema es que el ejecutor de pruebas de NUnit (cuando se ejecuta desde Resharper en Visual Studio) ejecuta la prueba desde otra carpeta (hace una copia oculta del ensamblaje de prueba), por lo que la configuración xml no está disponible en ese momento a menos que especifique la ruta de configuración completa.

Por supuesto, podría usar la configuración básica y especificar la configuración de registro en el código, como:

log4net.Config.BasicConfigurator.Configure(
  new log4net.Appender.ConsoleAppender {
    Layout = new log4net.Layout.SimpleLayout()});

Debería ver la salida del registro en la salida de prueba después de eso.


Mientras conozco y uso log4net con nunit, nunca he usado ningún archivo de configuración , solo necesita agregar la siguiente línea en el constructor de clase de prueba

BasicConfigurator.Configure();

aquí está la respuesta completa si desea ver la clase de prueba de muestra


Mi mejor suposición sería que hicieras algo como esto:

[TestFixture]
class DomainTests
{
    protected static readonly ILog log = LogManager.GetLogger(typeof(DomainTests));
    public void LoggingTests()
    {            
        log4net.Config.XmlConfigurator.Configure(); 
    }

    [Test]
    public void BasicLogTest()
    {
        log.Error("write my log entry already");
    }

    [SetUp]
    RunBeforeAnyTests()
    {
        BasicConfigurator.Configure();
    }

    [TearDown]
    RunAfterAnyTests()
    {
        // ...
    }

También usaría el archivo Log4Net.config en lugar del archivo app.config, simplemente parece más limpio. Aquí hay un ejemplo de archivo log4net.config:

<log4net>
  <!-- A1 is set to be a LogFileAppender -->
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net" >
    <param name="File" value="C:\logging\log.txt" />
    <file value="c:\logging\Main" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd'.log'" />
    <rollingStyle value="Composite" />
    <staticLogFileName value="false" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="500MB" />

    <!-- A1 uses PatternLayout -->
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <!-- Set root logger level to DEBUG and its only appender to LogFileAppender -->
  <root>
    <!--<level value="OFF" />-->
    <!--<level value="FATAL" />-->
    <!--<level value="ERROR" />-->
    <!--<level value="WARN" />-->
    <!--<level value="INFO" />-->
    <level value="DEBUG" />
    <!--<level value="ALL" />-->
    <appender-ref ref="LogFileAppender" />
  </root>
</log4net>