>  기사  >  백엔드 개발  >  Stdin에서 읽는 Go 애플리케이션을 테스트하는 방법: 모의 독자 및 작성자를 위한 가이드

Stdin에서 읽는 Go 애플리케이션을 테스트하는 방법: 모의 독자 및 작성자를 위한 가이드

Patricia Arquette
Patricia Arquette원래의
2024-10-26 17:32:30882검색

How to Test Go Applications That Read from Stdin: A Guide with Mock Readers and Writers

Stdin에 쓰는 Go 애플리케이션 테스트

이 가이드는 stdin 읽기 애플리케이션과 상호 작용하는 Go 테스트 사례를 작성하는 방법을 보여줍니다. 아래 예제 애플리케이션을 고려하십시오.

<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>

테스트 케이스 생성

이 애플리케이션의 stdin 기능을 테스트하기 위해 io.Reader에서 읽는 별도의 함수를 정의합니다. io.Writer에 씁니다.

<code class="go">func testFunction(input io.Reader, output io.Writer) {
    // Your test logic here...
}</code>

주 함수 수정

주 함수에서는 stdin 및 stdout을 인수로 사용하여 testFunction을 호출합니다.

<code class="go">func main() {
    testFunction(os.Stdin, os.Stdout)
}</code>

테스트 케이스 작성

이제 테스트 케이스에서는 모의 io.Reader 및 io.Writer를 사용하여 testFunction을 직접 테스트할 수 있습니다.

<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>

이 접근 방식을 사용하면 stdin에 작성하는 애플리케이션을 효과적으로 테스트하여 주요 기능의 복잡한 stdin 및 stdout 관리로부터 테스트 논리를 분리할 수 있습니다.

위 내용은 Stdin에서 읽는 Go 애플리케이션을 테스트하는 방법: 모의 독자 및 작성자를 위한 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.