Wie zum ausführen von NUnit-programmgesteuert
Habe ich einige assembly-Referenzen NUnit und erstellt ein einzelnes test-Klasse mit einer einzigen test-Methode. Ich bin in der Lage, um die Datei-system-Pfad zu dieser Baugruppe (z.B. "C:...\test.dll"). Ich möchte die programmgesteuerte Verwendung von NUnit, um gegen diese Versammlung.
Bisher habe ich:
var runner = new SimpleTestRunner();
runner.Load(path);
var result = runner.Run(NullListener.NULL);
Jedoch Berufung Läufer.Load(path) throws eine FileNotFound exception. Kann ich sehen, durch den stack-trace, dass das problem mit NUnit aufrufenden Assembly.Load(Pfad) unten im Stapel. Wenn ich den Pfad ändern, um so etwas wie "Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", dann habe ich immer noch die gleichen Fehler.
Habe ich einen event-handler der Anwendungsdomäne.Aktuelle.AssemblyResolve, um zu sehen, wenn ich könnte manuell beheben diese Art aber mein handler wird nie genannt.
Was ist das Geheimnis für die erste Montage.Last(...) zu arbeiten??
InformationsquelleAutor der Frage justin.m.chase | 2008-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, zu öffnen in eine console-Modusfügen Sie nunit-console-runner.dll Referenz und Verwendung:
Wenn Sie möchten, zu öffnen in eine gui-Modusfügen Sie nunit-gui-runner.dll Referenz und Verwendung:
Dies ist der beste Ansatz, da Sie nicht haben, um geben Sie einen beliebigen Pfad.
Weitere option ist auch die Integration von NUnit runner in Visual Studio debugger-Ausgabe:
InformationsquelleAutor der Antwort Ricibald
"Was ist das Geheimnis für die erste Montage.Laden zu arbeiten?"
System.Reflexion.Montage.Laden dauert einen string mit einer assembly-Namen, nicht den Pfad zu einer Datei.
Wenn Sie möchten, eine assembly zu laden, die aus einer Datei verwenden:
(LoadFrom tatsächlich verwendet Versammlung.Laden intern)
Übrigens, gibt es irgendeinen Grund, warum Sie kann;t die NUnit-Console-command-line-tool und übergeben Sie einfach den Pfad zu deinem Testaufbau? Sie konnte dann nutzen Sie einfach das System.Diagnostik.Prozess ausführen, dies innerhalb Ihrer client-Anwendung könnte einfacher sein?
InformationsquelleAutor der Antwort Ash