Beste Weg, um unit-test-console c# app

Habe ich eine einfache Konsolenanwendung. Es wird ausgelöst, der mit einem normalen main und das gesamte Programm recides in main. Es verwendet die Command Line Parser Library. Dann habe ich noch ein zweites Projekt in der Projektmappe enthält unit-tests für die Anwendung. Aber ich weiß nicht scheinen zu finden ein guter Weg, um Prozesse starten des Hauptprogramms von den tests. Mein Aktueller code für den eigentlichen start des Prozesses so aussieht.

...

process = new Process();
process.StartInfo.FileName = "FooBar";
process.StartInfo.Arguments = arguments;

//use it to start from testing environment
process.StartInfo.UseShellExecute = false;

//redirect outputs to have it in testing console
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;

...

Ich habe versucht Einstellung

process.StartInfo.WorkingDirectory

zu

AppDomain.CurrentDomain.BaseDirectory

und

Environment.CurrentDirectory;

Aber muss ich angeben, um die gesamte relative Pfad für die Konsole-Anwendungen, ausführbaren Datei oder ist es eine raffinierte Möglichkeit, das starten von Prozessen der "getestet" - Anwendung?
Zuerst hatte ich meine tests als Klasse in der "main" - Programm und dann lief es einwandfrei. Die Probleme begannen, als ich umgezogen bin die tests zu Ihrem eigenen Projekt gemacht. Das ist, warum ich vermute, dass ein Weg, das Thema oder etwas in der Natur.

Ich auch versucht, Läuft das Programm.Main aber das fühlt sich einfach so falsch 🙂

  • Ich denke, es ist besser, alle zu testen, das Verhalten im Prozess
  • Was meinst du? Nicht, dass ein separates Projekt für tests?
  • Sie sind nicht unit-testen, aber end-to-end-Prüfung. Unit-tests sind auf die Art-Ebene.
  • Ich meine, ist besser zu tun, standard-unit-tests für Ihre Klassen, ohne den Aufruf der ausführbaren Datei. Dies ist mehr ein integration test
  • Ja, kann ich Zustimmen. Regression test von Arten. Aber eine einfache Konsolen-app, die enthält keine anderen Funktionen als Haupt-und nicht in externen Klassen ist schwierig zu testen jede andere Art und Weise 😉
  • Ohne mein wissen auf diese Frage, habe ich eine Beispiel-app, die genau das tut, was Sie gefragt haben. Es ist eine Konsolenanwendung mit CommandLineParser aber breitet sich der code und ist überprüfbar. github.com/ryanrodemoyer/JsonFormatterExample. Der master-branch den code hat und stub unit-tests, so können Sie sich selbst trainieren, mit unit-Tests. Die Antworten, die Branche hat eine vollständige suite von unit-tests mit NUnit/Typemock (bezahlte version).

InformationsquelleAutor inquam | 2012-08-24
Schreibe einen Kommentar