Access-App.Config Einstellungen aus der Klassenbibliothek Aufgerufen, durch Unit-Test-Projekt
Habe ich Folgendes setup:
- ASP.net 3.5 Web-Site-Projekt
- C# - Klasse Bibliothek mit business-Logik
- C# - Klasse Bibliothek für unit-Tests
Die business-Logik-Bibliothek hat alle von der db-Zugriff. Es wird Verbindungszeichenfolgen aus dem web.config-Datei von der Website durch den Zugriff auf System.- Konfiguration.ConfigurationManager.ConnectionStrings. Wenn Sie die Bibliothek aufgerufen wird, die Website, dies funktioniert sehr gut, wie die Bibliothek sieht für die config des Anrufers.
Ich möchte in der Lage sein, zu testen, meine business-Logik durch die unit-Test-Klasse Bibliothek. Ich habe eine App.config-Datei in die Wurzel des Test-Klassenbibliothek. Von was ich gelesen habe, wenn die testing-Bibliothek ruft Daten Zugriff Prozeduren sind Teil der business-Logik-Bibliothek, die Verbindungs-Einstellungen von der App.config-Datei der Test-Bibliothek zugegriffen werden soll, und verwendet. Jedoch, wenn ich versuche zu laufen, meine unit-tests, bin ich immer Fehler zurück, die angeben, dass die Bibliothek zum testen der App.config-Datei (und/oder deren Inhalt) nicht zugegriffen wird erfolgreich.
Mein Auslagerung der config-Eigenschaften (aus dem business-logic-library) sieht wie folgt aus:
public SqlConnection MainConnection {
get {
string conn = "";
try {
conn = System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
} catch {
//might be calling from test project. Need to reference app settings
conn = System.Configuration.ConfigurationManager.AppSettings["connString"];
}
return new SqlConnection(conn);
}
}
Wenn dies heißt, die aus dem website-Projekt, funktioniert es. Innerhalb der unit-Tests, die conn-variable wird nie etwas (habe ich auch schon versucht System.- Konfiguration.ConfigurationSettings.AppSettings, und mit, statt mit dem gleichen Ergebnis). Was muss ich tun, um die business-Logik-Klassenbibliothek erfolgreich abrufen der unit-test-Klassen-Bibliotheken Einstellungen, wenn aus aufgerufen, in der NUnit-GUI?
Gerade die Frage, ich rufe die tests aus dem NUnit-GUI.
Es sollte nur arbeiten, wie Sie beschrieben. Sind Sie sicher, dass Sie alle relevanten Einstellungen in deinem Test-Projekt " app.config? Sind Sie vielleicht verwirrend AppSettings und ApplicationSettings? Könnte Sie buchen den entsprechenden Abschnitten der beiden config-Dateien?
InformationsquelleAutor Yaakov Ellis | 2009-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe gerade die Lösung gefunden hier. App.config ist jetzt ordnungsgemäß verwendet wird, wenn die Ausführung meiner tests durch die NUnit-GUI.
Offenbar, wenn Sie mit dem NUnit-GUI und fügen Sie die Baugruppe, indem Sie durch Projekt - > Add Assembly, es nicht auf die app zugreifen.config. Jedoch, wenn Sie hinzufügen, die Montage der NUnit-Projekt durch ziehen mit der dll aus dem Windows-Explorer in der NUnit-GUI, dann wird es auf die app zugreifen.config.
Alternativ können Sie die assembly über die GUI und dann gehen Sie in der NUnit-GUI - > Projekte > Bearbeiten, und legen Sie die Konfiguration-Datei-Namen, um den Namen der Konfigurationsdatei (VS-set diese zu nennen..Ihre.dll.config), und legen Sie das Projekt Base \bin\Debug-Verzeichnis des Projektes (das sind die zusätzlichen Schritte, werden im hintergrund durchgeführt, wenn Sie ziehen in der Montage vs indem es manuell.
active link: web.archive.org/web/20100619012049/http://www.safnet.com/...
sorry, aber ich habe versucht, dies zu tun, es funktioniert nicht, ich'have Konsole app und ich habe nur die exe Datei, keine dll
InformationsquelleAutor Yaakov Ellis
Ich würde empfehlen, sich mit der Gestaltung, so dass Ihre business-Logik-Schicht, anstatt die Verantwortung zu suchen-Konfigurationseinstellungen, ist injiziert mit Ihnen.
Ihre Web-app könnte Spritzen-Einstellungen, die es liest von der Web.config-Datei, wenn das Gerät testen konnte injizieren verschiedene Einstellungen (z.B. Verbindungs-string in eine test-Datenbank, etc).
InformationsquelleAutor azheglov
Nur umbenennen
app.config
zuname.of.your.dll.config
. Es funktioniert für mich.InformationsquelleAutor lubos hasko
Versuchen WebConfigurationManager.OpenWebConfiguration () - Methode
InformationsquelleAutor Jan Remunda