2016-05-17 13 views
1

Wir haben eine große .Net-Lösung (durch große, ich meine, 1,8 Millionen Zeilen Code, ~ 300 Projekte). Wir hatten einige UnitTests (sehr kleine Abdeckung) mit MsTests, und wir entschieden uns, die Unit-Tests ernst zu nehmen, denn jetzt sollte jeder neue Teil des Codes Unit-Tests enthalten.Best Practices für NUnit-Run-Tests?

Wir haben uns für NUnit entschieden.

Meine Frage ist: Jetzt haben wir eine ganze Reihe von NUnit-Tests, und wir möchten sie jede Nacht ausführen (wir haben eine TFS-Build-Maschine dafür). Das Problem, das wir haben, ist folgendes: Wir haben einige Projekte, die ein dynamisches Laden von DLL (Durchsuchen aller DLL in einem Unterordner mit Beispiel), und einige der Einheiten Tests müssen diese DLL in der Reihenfolge geladen haben um das erwartete Ergebnis zurückzugeben.

Derzeit haben wir ein Ausgabeverzeichnis, auf das alle unsere Projekte ausgerichtet sind. In diesem Ausgabeverzeichnis haben wir einen Unterordner für die Einheiten-Tests:

Debug/x86 
- /sub folder for dynamic loading one/ 
- /sub folder for dynamic loading two/ 
- /sub folder for dynamic loading three/ 
- /sub folder with DLL not loaded with dynamic but [with probing element app.config][1]/ 
- /UnitTests/ 
- /lot of DLL 
- /Some executable of our solutions 

Derzeit unsere Tests fehlschlagen, weil wir einige DLL auf die Wurzel des lib testen, aber die dynamisch geladenen DLL nicht gefunden werden kann.

Was ist die beste Vorgehensweise hier? kann ich ein paar Szenario vorstellen:

  • den Unittest
  • Copy (Postbuildereignis) DLL in dem Verzeichnis im Stammverzeichnis Unittest Put
  • Einen weiteren magischen Trick, den uns zu den Referenzen einig Ordner in unserem erlauben "Eltern" Ordner?

Antwort

1

Führen Sie die Tests mit der AppBase auf den Stamm festgelegt. Wie Sie dies erreichen können, hängt von Ihrer Testmethode ab, die nicht angegeben ist. Wenn Sie beispielsweise die nunit3-Konsole verwenden, gibt es Befehlszeilenargumente oder mit dem NUnit3 VS-Adapter können Sie eine .runsettings-Datei verwenden.