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 중국어 웹사이트의 기타 관련 기사를 참조하세요!