Domanda

Sto eseguendo NUnit con il progetto denominato AssemblyTest.nunit. Il test chiama un altro assembly che utilizza l'assembly log4net. Questo utilizza nunit versione 2.4.3 con il framework .net 2.0.

In TestFixtureSetup chiamo log4net.Config.XmlConfigurator.Configure () e visualizzo il seguente errore:

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

Esiste un modo per risolvere questo problema senza rinominare il file di configurazione in 'AssemblyTest.config'?

È stato utile?

Soluzione

Crea un file di configurazione separato per log4net con l'elemento root log4net.

In TestFixtureSetup creare un oggetto FileInfo per questo file di configurazione e assegnarlo come argomento a log4net.Config.XmlConfigurator.Configure ().

Altri suggerimenti

Ho avuto lo stesso problema perché ho dimenticato di aggiungere la log4net nell'elemento configSections .

Quindi, se si desidera inserire log4net -elementi in app.config, è necessario includere l'elemento configSections (che indica dove log4net -elements sono definiti) nella parte superiore del file di configurazione.

Provalo in questo modo:

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

Non so perché siete intrappolati nei file di configurazione, per nunit se vi piace vedere i log in esecuzione nella finestra di output del testo in nunit test runner tutto ciò che dovete fare è seguire la riga di codice,

BasicConfigurator.Configure();

punto migliore aggiungere questa riga è il costruttore della classe Test

es.

[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");
        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top