테스트를 위한 입력과 출력 변경
코드를 테스트하려면 매번 키보드로 입력하고 콘솔 출력을 확인하는 것은 번거롭다.
자바에서는 Scanner 입력을 문자열로 변경하고, System.out 출력을 문자열로 받아 자동으로 테스트해볼 수 있다.
Scanner의 입력을 문자열로 변경
기존에는 키보드 입력을 사용했지만 테스트에서는 미리 준비한 문자열을 입력으로 사용할 수 있다.
String input = """
등록
너 자신을 알라
""";
Scanner sc = new Scanner(input);
이렇게 하면 nextLine()을 호출할 때마다 문자열을 한 줄씩 읽는다.
System.out의 출력을 문자열로 변경
기존에는 모든 출력이 모니터(콘솔)로 전달되지만 테스트에서는 출력 결과를 문자열에 저장하여 비교할 수 있다.
System.out.println("하하하"); //콘솔 출력
PrintStream originalOut = System.out; // 기존 콘솔 출력을 저장한다.
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //출력을 저장할 메모리 공간을 생성
PrintStream printStream = new PrintStream(outputStream); //출력을 메모리 공간으로 보내기 위한 PrintStream을 생성
System.setOut(printStream); // System.out의 출력 대상을 콘솔에서 메모리로 변경
System.out.print("하하하");
String outStr = outputStream.toString(); //저장된 출력 내용을 문자열로 가져오기
System.setOut(originalOut); // 출력 대상을 다시 콘솔로 복원
printStream.close();
출력된 문자열을 원하는 결과와 비교하여 테스트할 수 있다.
if (outStr.equals("하하하")) {
System.out.println("출력 결과가 일치합니다.");
} else {
System.out.println("출력 결과가 일치하지 않습니다.");
}
이처럼 입력과 출력을 문자열로 변경하면 사용자 입력 없이 프로그램을 실행하고, 출력 결과까지 자동으로 검증할 수 있어 테스트 코드를 작성하기 편리하다.
'알고리즘 > Java' 카테고리의 다른 글
| [Java] 오버로딩(Overloading) (0) | 2026.07.23 |
|---|---|
| 레이어드 아키텍처 (0) | 2026.07.22 |
| [Java] try-catch (0) | 2026.07.21 |
| [Java] 자바 스트림, 람다 (0) | 2026.07.20 |
| [Java] 캡슐화(Encapsulation) (0) | 2026.07.15 |
댓글