Unit Test Hilfe. Wie überprüfe ich, ob eine Nachricht an die Konsole ausgegeben wird?

8

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

    
Hcabnettek 17.08.2009, 07:03
quelle

4 Antworten

14

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.

    
Steve Gilham 17.08.2009 07:13
quelle
4

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 wird

Mit anderen Worten, anstatt:

%Vor%

Sie könnten tun:

%Vor%

und dann im Testfall:

%Vor%

Ich hoffe, es hilft. Regale Simon

    
Szymon Kuzniak 17.08.2009 07:13
quelle
0

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.

    
Noon Silk 17.08.2009 07:05
quelle
0

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.

    
quamrana 18.08.2009 14:52
quelle

Tags und Links