Ich bin ein Neuling für Unit-Tests. Wie überprüfe ich die für die Konsolenausgabe? Ich habe
%Vor%}
%Vor%Wie soll ich das richtig testen? Danke für irgendwelche Hinweise. Prost, ~ ck
Die wörtliche Antwort wäre, dass Sie Console.SetOut
verwenden würden, bevor Sie die zu testende Klasse aufrufen, um stdout
in einen memoryStream oder ähnliches zu leiten, dessen Inhalt Sie später überprüfen können.
Die bessere Antwort wäre, ein spöttisches Framework wie Rhino Mocks zu verwenden, um eine konkrete Instanz Ihrer abstrakten Klasse zu erstellen, mit einem Erwartungssatz, dass die Methode DrawXXShape
aufgerufen würde.
Sie müssen die 'Console.WriteLine'-Routine nicht testen, weil Sie davon ausgehen müssen, dass sie funktioniert - es ist nicht Ihr Code, also warum wollen Sie ihn testen? Sie müssen testen, ob Sie eine korrekte Zeichenfolge erzeugen, die an 'Console.WriteLine'
übergeben wirdMit anderen Worten, anstatt:
%Vor%Sie könnten tun:
%Vor%und dann im Testfall:
%Vor%Ich hoffe, es hilft. Regale Simon
Das ist überhaupt nicht das, was Sie tun würden.
In Ihrem Test werden Sie in der Regel nach dem Zustand des Objekts suchen, etwa wie folgt:
%Vor%Abhängig davon, wie Ihr gewähltes Framework funktioniert. Daher müssen Sie Ihren Ansatz im Allgemeinen ändern, um diesem Modell zu entsprechen.
Ich gehe davon aus, dass einige andere Tests auf die Zeichenfunktionen testen - Wenn Sie nun testen möchten, dass Ihre Klassen etwas speziell auf die Konsole schreiben, sollten Sie die Idee des Schreibens auf die Konsole abstrahieren.
Erstellen Sie eine Schnittstelle mit einer WriteLine () -Methode und injizieren Sie Instanzen, die diese Schnittstelle in XXShapes implementieren. Ihre Tests können Mocks oder Stubs injizieren, die die geschriebenen Strings erfassen und deren Inhalt in den Tests testen können.