Ich habe eine einfache Konsolen-App. Es wird mit einem normalen Hauptprogramm abgefeuert und das gesamte Programm wird im Hauptteil wiedergegeben. Es verwendet die Befehlszeilen-Parser-Bibliothek . Dann habe ich ein zweites Projekt in der Lösung, das Komponententests für die Anwendung enthält. Aber ich finde keinen guten Weg, Prozesse des Hauptprogramms aus den Tests zu starten. Mein aktueller Code für den eigentlichen Start des Prozesses sieht in etwa so aus.
%Vor%Ich habe versucht,
einzustellen %Vor%bis
%Vor%und
%Vor%Aber muss ich den gesamten relativen Pfad für die ausführbaren Konsolenanwendungen angeben oder gibt es eine verfeinerte Methode, Prozesse der "getesteten" Anwendung zu starten? Zuerst hatte ich meine Tests als Klasse im "Hauptprogramm" und dann funktionierte es gut. Die Probleme begannen, als ich die Tests in ihr eigenes Projekt verlagerte. Deshalb vermute ich, dass ein Weg das Problem oder etwas dieser Art ist.
Ich habe auch versucht Running Program.Main aber das fühlt sich einfach so falsch an:)
Ich würde vorschlagen, Ihre Bewerbung in:
umzugestaltenProgram
- Ein Einstiegspunkt, der die Argumente analysiert und eine Settings
-Instanz Settings
- Einstellungen für die Anwendung (nach Geschmack umbenennen) BusinessClass
- (definitiv umbenennen!) die eigentliche Arbeit, die eine Settings
instance Jetzt können Sie die Dinge separat testen:
Settings
, d. h., verwenden Sie die Parser-Bibliothek korrekt Settings
erstellen
Wenn möglich, sollten Sie Ihre Geschäftslogik natürlich in separate Klassen für separate Probleme aufteilen und diese einzeln testen. Wir wissen nicht wirklich genug, um hier konkrete Vorschläge machen zu können.
Ich weiß nicht, warum sich Program.Main für dich falsch anfühlt.
Sie sollten nicht den Konsolenmechanismus testen ... nur die Programmlogik, die Sie einfach so machen können.
Tags und Links c# unit-testing nunit