Testen von Go-Anwendungen, die in Stdin schreiben
Diese Anleitung zeigt, wie man Go-Testfälle schreibt, die mit Stdin-lesenden Anwendungen interagieren. Betrachten Sie die Beispielanwendung unten:
<code class="go">package main import ( "bufio" "fmt" "io" "os" ) func main() { reader := bufio.NewReader(os.Stdin) for { fmt.Print("> ") bytes, _, err := reader.ReadLine() if err == io.EOF { os.Exit(0) } fmt.Println(string(bytes)) } }</code>
Erstellen eines Testfalls
Um die Standardfunktionalität dieser Anwendung zu testen, definieren wir eine separate Funktion, die von einem io.Reader liest und schreibt an einen io.Writer:
<code class="go">func testFunction(input io.Reader, output io.Writer) { // Your test logic here... }</code>
Ändern der Hauptfunktion
In der Hauptfunktion rufen wir die testFunction mit stdin und stdout als Argumente auf:
<code class="go">func main() { testFunction(os.Stdin, os.Stdout) }</code>
Den Testfall schreiben
In unserem Testfall können wir die testFunction jetzt direkt mit einem simulierten io.Reader und io.Writer testen:
<code class="go">func TestInput(t *testing.T) { input := "abc\n" output := &bytes.Buffer{} inputReader := bytes.NewReader([]byte(input)) testFunction(inputReader, output) if got := output.String(); got != input { t.Errorf("Wanted: %v, Got: %v", input, got) } }</code>
Mit diesem Ansatz können Sie Anwendungen, die in stdin schreiben, effektiv testen und dabei die Testlogik von den Feinheiten der stdin- und stdout-Verwaltung in der Hauptfunktion isolieren.
Das obige ist der detaillierte Inhalt vonSo testen Sie Go-Anwendungen, die von Stdin lesen: Ein Leitfaden mit Mock-Readern und -Autoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!