cli behavior

stdout은 결과를, stderr는 실패 설명을 맡는다

`> output.txt`는 stdout만 파일로 보내므로 에러 메시지를 stderr에 두면 테스트와 자동화가 성공 출력만 안정적으로 읽을 수 있다.

성공 실행

검색 결과 있음

$ cargo run -- to poem.txt > output.txt

stdout

검색 결과가 output.txt에 저장된다.

stderr

에러가 없으므로 터미널은 조용하다.

실패 실행

인수 부족

$ cargo run > output.txt

stdout

정상 결과가 없으므로 output.txt는 비어 있다.

stderr

문제 원인은 리디렉션되지 않고 화면에 남는다.

테스트에서 확인할 것

CLI 테스트는 텍스트 내용만이 아니라 어느 스트림에 기록됐는지를 함께 확인해야 한다.

1

정상 케이스 stdout에는 결과, stderr에는 불필요한 메시지가 없어야 한다.

2

에러 케이스 stderr에는 원인, stdout에는 성공 데이터가 없어야 한다.

3

자동화 판단 exit code와 stderr를 함께 보면 실패를 명확히 다룰 수 있다.