C # Unit Testen Sie einen StreamWriter-Parameter

8

Ich habe eine Reihe von Klassen, die alle ein Interface implementieren und einer der Parameter ist ein StreamWriter.

Ich muss den Inhalt des StreamWriter überprüfen.

Ich versuche einen Weg zu finden, um das Schreiben von Textdateien auf dem Testserver zu vermeiden und sie zu öffnen, um den Inhalt zu überprüfen.

Gibt es eine Möglichkeit, den StreamWriter-Inhalt / Stream schnell in eine StringBuilder-Variable zu konvertieren?

    
Yogurt The Wise 18.09.2012, 15:50
quelle

4 Antworten

13

Sie können nicht überprüfen die StreamWriter . Sie könnten den zugrunde liegenden Stream überprüfen, in den er schreibt. Du könntest also einen MemoryStream in deinem Komponententest verwenden und diesen StreamWriter darauf zeigen. Wenn es fertig geschrieben ist, könntest du daraus lesen.

%Vor%     
Darin Dimitrov 18.09.2012, 15:53
quelle
10

Ich würde vorschlagen, dass Sie den Parameter in TextWriter ändern, wenn überhaupt möglich - an diesem Punkt können Sie StringWriter verwenden.

Alternativ können Sie auch ein StreamWriter um ein MemoryStream erstellen und dann testen Der Inhalt dieses MemoryStream später (entweder durch Zurückspulen oder durch Aufruf von ToArray() , um den kompletten Inhalt als Bytearray zu erhalten Wenn du wirklich text testen willst, ist es definitiv einfacher ein StringWriter zu benutzen.

    
Jon Skeet 18.09.2012 15:54
quelle
2

Sie können es durch einen StreamWriter ersetzen, der in einen MemoryStream schreibt.

    
Henk Holterman 18.09.2012 15:55
quelle
1

In diesem Fall müssen Sie sich über den Testfall lustig machen. Sie können Frameworks wie Rhino Mocks verwenden. Der Vorteil von Mocking Framework ist, dass Sie den Inhalt der Objekte überprüfen können, aber Sie müssen nicht den Server treffen oder Serverressourcen belegen.

Dieser Link bietet Ihnen die grundlegenden Beispiele: Ссылка

    
Priyank Thakkar 18.09.2012 15:56
quelle

Tags und Links