Wie kann Sie anweisen, NUnit, um eine assembly zu laden dll.config-Datei aus einem bestimmten Verzeichnis?
Wenn eine Baugruppe enthält eine app.config-Datei ConfigurationManager
wird geladen, solange es im gleichen Verzeichnis wie die NUnit-Projekt, das ausgeführt wird, durch die NUnit-Gui. Zu veranschaulichen, betrachten Sie die folgende Ordner-Struktur.
+ TestFolder
testProject.nunit
+ AssemblyAFolder
assemblyA.dll
assemblyA.dll.config
+ AssemblyBFolder
assemblyB.dll
assemblyB.dll.config
Beide AssemblyA
und AssemblyB
übung-code, der Aufrufe in ConfigurationManager
. Wenn ich diese test-Baugruppen unabhängig voneinander in der NUnit-Gui ConfigurationManager
richtig aufgelöst werden die lokalen Konfigurationsdateien.
Jedoch, wenn ich die Last testProject.nunit
in NUnit-Gui (enthält Verweise auf beide AssemblyA
und AssemblyB
), ConfigurationManager
sieht für die Konfigurations-Datei in TestFolder
unabhängig davon, welche Montage ist die derzeit ausgeführt werden.
Gibt es eine Möglichkeit, direkte NUnit reload die Konfiguration der Anwendung an die man in der aktuellen assembly-Verzeichnis?
Hier der Inhalt der testProject.nunit
:
<NUnitProject>
<Settings activeconfig="Debug" />
<Config name="Debug" binpathtype="Auto">
<assembly path="AssemblyAFolder\assemblyA.dll" />
<assembly path="AssemblyBFolder\assemblyB.dll" />
</Config>
</NUnitProject>
Glücklicherweise sollte diese Arbeit in meinem Fall, da lese ich verschiedene config-Abschnitte in die einzelnen Baugruppen. Ich bin neugierig, ob es eine bessere oder allgemeineren Ansatz.
InformationsquelleAutor Steve Guidi | 2009-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem NUnit-blog erklärt, warum die config Dateien laden, wie Sie es tun. Im Grunde, was Sie sagte, war, dass NUnit ermöglicht das framework Griff die config Dateien und nicht von der Verwaltung.
Können Sie auch die
testProject.config
- Datei, die würde geladen werden, in deinem Fall, die Bezugnahme auf die config-Dateien für jede der Baugruppen. Mit den appSettings der Datei-Attribut-Tasten hinzufügen.Eine Letzte alternative ist die Verwendung der
configSource
- element Attribut , verwenden Sie den Abschnitt in einem der Baugruppen-config-Dateien.Hoffe, das hilft.
InformationsquelleAutor MarcLawrence
Nunit ist nicht in der Lage um den Pfad zu suchen der App.config-Datei in unserem Projekt. Also müssen wir manuell sagen, das Nunit, wo die App.config-Datei in unser Projekt (natürlich nicht auf der root-Ordner).
In meinem Fall , die Projekt-Struktur ist wie folgt
den ProjectWebApp verwendet die Referenzen von projectBusinesslogic, welche die Geschäftslogik enthält.
die +ProjectTestName verwendet die Referenz von projectBusinesslogic zum durchführen von test-auf die business-Logik.
Die Probleme beginnen hier, Nunit test Projekt braucht seine eigene app.config-Datei. es wird nicht die Nutzung von web.config-Datei wie im Fall von projectBusinesslogic,so dass beim ausführen von Nunit wird es prompt einen Fehler
Lösung-
Beim ausführen von Nunit-GUI
und das ist die einfache Lösung für Ihr problem
Vielen Dank, Ihre Schritte 1 - 4 war alles es dauerte!
InformationsquelleAutor Mangesh Gulhane
Den
configSource
element Lösung gegeben durch MarkLawrence ist das, was ich suchte und funktioniert gut. Die Herausforderung bei der Umsetzung dieser Lösung ist jedoch, um die assembly-Konfiguration geladen bei der Ausführung von tests aus, die sowohl eine explizite NUnit-Projekt (wie mein Fall), UND beim ausführen der unit-tests sind für eine Montage in Isolierung (keine explizite Projekt). Um dies zu erreichen, werden die folgenden änderungen an meiner Datei layout erforderlich waren.Den
configfragment
- Dateien erstellt werden, enthalten die assembly-Konfiguration, die einst in der entsprechendenconfig
- Dateien. Danach werden dieconfig
- Dateien werden geändert, um enthalten nur einenconfigSource
element mit einem relativen Pfad zu der entsprechendenconfigfragment
- Datei. Beachten Sie, dass das einzige mal, dass dieser Ansatz nicht funktioniert, ist, wennassemblyA.dll
undassemblyB.dll
beide erfordern die gleiche Konfiguration Abschnitt, wie ein Konflikt entsteht, wenn die Erstellungtestproject.config
.Nach dem Experimentieren mit diesem Ansatz habe ich beschlossen, zu verlassen sich auf die Generierung der assembly-Konfiguration zur Laufzeit, und entfernen Sie die statische Konfigurationsdateien, alle zusammen. Hier ist ein code, der zeigt, wie zu generieren der Konfiguration und zugänglich zu machen, unabhängig davon, wie die Montage-unter-test geladen.
Mithilfe der ConfigurationManager.OpenExeConfiguration() überlasten, dass nicht die einen Pfad akzeptieren, laden wir die Konfiguration aus der host-Anwendung arbeiten-Verzeichnis, das ändert sich, je nachdem, wie man mit dem NUnit-tests. Auch das try/finally-block garantiert, dass Ihre assembly-Konfiguration wird nicht stören andere Prüfungen, die möglicherweise oder möglicherweise nicht solche Konfiguration erfordern.
Schließlich, in einem unit-test:
Ich hoffe, dies hilft anderen Menschen, die möglicherweise auf ein ähnliches Problem gestoßen!
InformationsquelleAutor Steve Guidi
Verwenden Sie die Konfigurationsdatei-Attribut in der Konfigurations-Ebene, in Ihr .nunit Datei:
InformationsquelleAutor Daniel
Eigentlich, wenn Sie mit NUnit und ein Läufer innerhalb von Visual Studio können Sie Ihre stick-Wert in einer App.config in deinem test-Projekt. Dann fügen Sie diese Zeile, um Ihre Post-build-event:
copy /Y “$(ProjectDir)App.config" "$(TargetDir)$(TargetFileName).config"
Wenn Sie auf der ConfigurationManager in Ihren tests, NUnit wird, übergeben Sie die Werte in Ihre app.config .Net in der initialize-Methode.
InformationsquelleAutor Steven Hoff