Heim >Backend-Entwicklung >Golang >Wie kann man stdin/stdout-Interaktionen in Go-Anwendungen effektiv testen?

Wie kann man stdin/stdout-Interaktionen in Go-Anwendungen effektiv testen?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 12:47:29551Durchsuche

How to Effectively Test stdin/stdout Interactions in Go Applications?

Testen von stdin/stdout-Interaktionen in Go

Bei der Entwicklung von Anwendungen, die mit stdin und stdout interagieren, ist es wichtig, ihr Verhalten mithilfe von Tests zu überprüfen. Betrachten wir ein einfaches Beispiel, in dem ein Programm Zeilen von stdin liest und sie an stdout zurückgibt.

Testfall mit Unterprozess

Anfangs wurde ein Testfall mit OS geschrieben /exec, um das Programm als Unterprozess zu starten und mit seinen stdin- und stdout-Pipes zu kommunizieren. Dieser Ansatz führte jedoch zu Testfehlern aufgrund der direkten Verwendung von stdin und stdout durch die Hauptfunktion.

Die Logik separat testen

Um dieses Problem zu beheben, sollte der Code umgestaltet werden, um die stdin/stdout-Verarbeitung von der Hauptlogik zu trennen. Es kann eine neue Funktion definiert werden, die einen io.Reader und einen io.Writer als Parameter akzeptiert, die stdin und stdout darstellen. Diese Funktion kann die gewünschten Vorgänge ausführen, wie z. B. das Lesen und Echo von Zeilen.

Überarbeiteter Testfall

<code class="go">func TestEcho(t *testing.T) {
    in := bufio.NewReader(strings.NewReader("abc\n"))
    out := &bytes.Buffer{}

    echo(in, out)

    got := out.String()
    want := "abc\n"
    if got != want {
        t.Errorf("Wanted: %v, Got: %v", want, got)
    }
}</code>

In diesem überarbeiteten Testfall wird die Echofunktion getestet direkt. Es stellt mithilfe eines String-Readers Eingaben für die Funktion bereit und erfasst die Ausgabe mithilfe eines Puffers. Durch den Vergleich der erwarteten Ausgabe („abcn“) mit der tatsächlichen Ausgabe aus dem Puffer überprüft der Test das korrekte Verhalten der Echo-Funktion.

Dieser Ansatz trennt das Testen der Programmlogik von den Besonderheiten der Handhabung stdin und stdout bieten eine zuverlässigere und wartbarere Teststrategie.

Das obige ist der detaillierte Inhalt vonWie kann man stdin/stdout-Interaktionen in Go-Anwendungen effektiv testen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn