C# Unit-Testing(Nunit) die Main-Methode einer Konsolenanwendung?
Ich habe eine Frage zu unit-Tests die Main-Methode einer Konsolenanwendung. Die standard-Signatur ist
public static void Main(string[] args)
Ich möchte in der Lage sein zu testen, um sicherzustellen, dass nur 1 parameter übergeben wird. Wenn mehr als ein parameter übergeben wird, möchte ich den test fehlschlagen.
Ich glaube nicht, dass ich verspotten diese mit MOQ wie der eine statische Methode.
Jemand irgendwelche Erfahrungen mit diesem?
Irgendwelche Ideen ?
Dank
Warum würden Sie brauchen, zu verspotten? Gibt es Abhängigkeiten, die nicht aufgerufen werden können?
Eingang sollte geprüft werden, die zur Laufzeit innerhalb der main-Methode. Warum ist dies entscheidend für Ihren unit-test?
Nur ein Hinweis für zukünftige Leser: Die Signatur kann geändert werden, um
Eingang sollte geprüft werden, die zur Laufzeit innerhalb der main-Methode. Warum ist dies entscheidend für Ihren unit-test?
Nur ein Hinweis für zukünftige Leser: Die Signatur kann geändert werden, um
static int Main
und ich machen manchmal die Verwendung der return-signal zum erstellen von unit-testsInformationsquelleAutor Martin | 2014-07-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es nichts zu spotten, in Ihrem Szenario. Statische
Program.Main
ist eine Methode wie jede andere und testen Sie es als solche-indem die Berufung auf Sie.Das Problem mit
static void
Methode ist, dass Sie können nur überprüfen, ob es wirft exception oder interagiert mit input-argument (oder andere statische Elemente, die schließlich). Da gibt es nichts zum interagieren mit aufstring[]
können Sie testen, ersteren Fall.Jedoch, mehr sound Ansatz zu delegieren alle Logik enthalten in
Main
separate Komponente und test statt. Nicht nur erlaubt dieses Ihnen, testen Sie Ihre Eingabe argument handling logic gründlich, sondern auch vereinfachtMain
mehr oder weniger diese:InformationsquelleAutor k.m