2016-09-19 2 views
0

Ich versuche, die Protokollierung zu nunit Test Unternehmen proove von log etnries etc .. ErstellenDer Versuch, nunit Test Unternehmen Protokollierung

scheine ich kippe es ich um Arbeits- zu erhalten eine Fehler den Abschnitt Config für loggin können nicht in der config source gefunden - ich denke, das hat etwas damit zu tun, dass es sich um einen wpf handelt und die app config nicht gestartet wird, wenn ich einen nunit test von einer Klasse starte. Irgendwelche Gedanken?

namespace Nunit 
{ 
    [TestFixture] 
    public class NunitTests 
    { 
     string Path = @"C:\Users\dani\bin\Debug\trace.log"; 



     [Test] 
     public void TestLogCreation() 
     {} 
} 
+0

Ist das App.config in Ihrem Projekt Unit-Tests richtig konfiguriert? Verfügt es über die gesamte Konfiguration, um die Ausgabe zu protokollieren? –

Antwort

0

Viel einfacher Weg dies zu tun wäre eine app.config-Datei innerhalb des Nunit Projekt zu erstellen und den Inhalt über kopieren - funktioniert perfekt

+0

Das ist immer möglich. Aber während das Unit-Testing ein Stück Code ist, sollte es keine Abhängigkeit von irgendeiner externen Komponente geben. In diesem Fall wird es ein Integrationstest. Aus diesem Grund haben Sie beim Lesen eines Konfigurationseintrags einen Fehler erhalten, weil Sie einen Code verwendet haben, der von externen Faktoren abhängig ist. Glückliche Kodierung :) – Sagar

1

Wenn Sie NUnit ausführbare Datei ausführen, versucht es, für alle Konfigurationseinträge in seine eigene Konfigurationsdatei zu suchen, die es nicht finden können. Danach sucht es nach Konfigurationseinträgen in der Datei machine.config. Dort findet es auch nicht die Konfigurationseinträge, daher gibt es den Fehler.

Sie können dies beheben, indem Sie die Konfigurationseinträge in die Datei machine.config setzen.

Aber es wäre nicht ein richtiger Weg zum Komponententest. Sie müssen eine falsche Klasse zum Lesen von Konfigurationseinträgen bereitstellen, anstatt die tatsächlichen Konfigurationswerte aus der Konfigurationsdatei zu lesen.

machine.config Datei kann bei unten genannten Pfaden:

32 bit

%windir%\Microsoft.NET\Framework\[version]\config\machine.config 

64 bit

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

EDIT

public interface IConfigReader 
{ 
    string ReadConfigEntry(string keyName); 
} 

public class ConfigReader : IConfigReader 
{ 
    public string ReadConfigEntry(string keyName) 
    { 
     return System.Configuration.ConfigurationManager.AppSettings[keyName]; 
    } 
} 

public class FakeConfigReader : IConfigReader 
{ 
    public string ReadConfigEntry(string keyName) 
    { 
     string configValue = string.Empty; 

     //provide dummy implementation instead of reading actual .config file 

     return configValue; 
    } 
} 

Jetzt Instanzen von IConfigReader Schnittstelle erstellen. Im tatsächlichen Code verwenden Sie ConfigReader Implementierung, um Konfigurationswerte zu lesen und während Unit-Test FakeConfigReader Implementierung verwenden. In FakeConfigReader können Sie jeden beliebigen hartcodierten Wert von ReadConfigEntry Methode zurückgeben.

+0

Wie würden Sie eine falsche Klasse zum Lesen config entrie erstellen – Webezine

+0

@ user3223507 Ich habe meine Antwort bearbeitet. Bitte prüfen Sie, ob es sinnvoll ist oder nicht. – Sagar

+0

Danke - Ich bin ziemlich neu zu C# so habe yoru Code kopiert, aber nicht sicher, wo ich wudl Dinge anwenden würde - ich bearbeitet abovce, um meinen Code aufzunehmen yo umind hilft mir nur ein bisschen mehr zu zeigen, wie ich das implementieren – Webezine

Verwandte Themen