2008-10-01 14 views
5

Używam NUnit z projektem o nazwie AssemblyTest.nunit. Test wywołuje inny zestaw, który używa zespołu log4net. Używa to nunit w wersji 2.4.3 ze środowiskiem .net 2.0.Sekcja konfiguracji logowania dla NUnit z zakresu log4net

W TestFixtureSetup Wołam log4net.Config.XmlConfigurator.Configure() i otrzymuję następujący błąd:

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

Czy istnieje sposób aby to naprawić bez zmiany nazwy pliku konfiguracyjnego do „AssemblyTest.config” ?

+0

Nie jestem zaznajomiony z .NET, ale nie ma nic w błędzie, co sugeruje mi przynajmniej to, że ma to coś wspólnego z nazwą pliku konfiguracyjnego. Wygląda mi na to, że jest problem z linią 7 w pliku konfiguracyjnym. – TomC

+0

Tak, dlatego zadałem to pytanie. Wiersz pliku konfiguracyjnego działa z plikiem nazwanym przez nunitową nazwę projektu i dokładnie tym samym tekstem. Dzięki za punkt. –

Odpowiedz

4

Utwórz osobny plik konfiguracyjny dla log4net z elementem głównym log4net.

W TestFixtureSetup utwórz obiekt FileInfo dla tego pliku konfiguracyjnego i nadaj mu jako argument log4net.Config.XmlConfigurator.Configure().

10

Miałem ten sam problem, ponieważ zapomniałem dodać definicję log4net w elemencie konfiguracyjnym configSections.

Tak więc, jeśli chcesz umieścić log4net -elements w app.config, trzeba zawierać configSections element (który mówi gdzie log4net -elements są zdefiniowane) na początku pliku konfiguracyjnego .

Spróbuj tak:

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

Miałem ten problem również z systemem testowym Visual Studio –

5

nie wiem dlaczego faceci są uwięzione w plikach konfiguracyjnych, dla NUnit jeśli chcesz zobaczyć logi uruchomiony w oknie Output tekst w teście nunit biegacza wszystko, czego potrzebujesz zrobić, to po linii kodu,

BasicConfigurator.Configure(); 

najlepszym punktem dodać ten wiersz jest konstruktor klasy testowej

m.in.

[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"); 
     } 
    } 
+0

Krótki i doskonały! – ShloEmi

+0

Powoduje, że wszystkie moje wyciągi z dziennika na dane wyjściowe w teście jednostki i nie wymagają ponownej aplikacji, która faktycznie była używana. +1 dla żadnego pliku konfiguracyjnego! Idealny! – K0D4