Pregunta

Estoy ejecutando NUnit con el proyecto llamado AssemblyTest.nunit. La prueba llama a otro ensamblado que usa el ensamblado log4net. Esto está usando nunit versión 2.4.3 con el marco .net 2.0.

En TestFixtureSetup estoy llamando a log4net.Config.XmlConfigurator.Configure () y obtengo el siguiente error:

System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section log4net. (C:\path\to\assembly.dll.config line 7)

¿Hay alguna manera de arreglar esto sin cambiar el nombre del archivo de configuración a 'AssemblyTest.config'?

¿Fue útil?

Solución

Cree un archivo de configuración separado para log4net con el elemento raíz log4net.

En TestFixtureSetup, cree un objeto FileInfo para este archivo de configuración y dele el argumento a log4net.Config.XmlConfigurator.Configure ().

Otros consejos

Tuve el mismo problema porque olvido agregar la definición log4net en el elemento configSections .

Entonces, si desea poner log4net -elementos en la app.config, debe incluir el elemento configSections (que indica dónde log4net -elementos están definidos) en la parte superior del archivo de configuración.

Pruébalo así:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
  ...
  </log4net>
</configuration>

No sé por qué están atrapados en los archivos de configuración, para nunit si les gusta ver los registros que se ejecutan en la ventana de salida de texto en nunit test runner, todo lo que necesitan hacer es seguir la línea de código,

BasicConfigurator.Configure();

el mejor punto, agregue esta línea es el constructor de la clase Test

p.

[TestFixture]
    public class MyTest
    {
        log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyTest));

        public MyTest()
        {
            BasicConfigurator.Configure();
        }

        [SetUp]
        public void SetUp()
        {
           log.Debug(">SetUp");               
        }

        [TearDown]
        public void TearDown()
        {
            log.Debug(">TearDown");
        }

        [Test]
        public void TestNothing()
        {
            log.Debug(">TestNothing");
        }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top