흔히 자바는 JVM 덕분에 운영체제에 독립적으로 동작된다고 알려져 있습니다.
각 운영체제에 맞는 JVM만 설치하면, 프로그래머 입장에서는 운영체제에 상관 없이 개발할 수 있기 때문입니다.
하지만, 운영체제에 따라 같은 코드라도 다르게 동작하는 것이 몇 개 있습니다.
그 중 하나가 System.out.println()입니다.
흔히 줄바꿈(띄어쓰기, 개행)의 목적으로 println을 사용합니다.
문장을 출력하고 자동으로 줄바꿈을 하기 때문입니다.
이 줄바꿈는 운영체제 마다 하는 방식이 달라집니다.(운영체제 마다 줄바꿈 문자가 다르기 때문입니다.)
제 삽질을 통해 예시를 보여드리겠습니다.
저는 출력을 비교하는 테스트 코드를 작성하고 있었습니다.
이 출력을
으로 출력이 정상적으로 이뤄지는지 확인을 하는 코드입니다.
하지만 테스트 케이스는 실패했습니다.
그 이유를 찾기 위해 디버깅을 시도 했습니다.
디버깅을 하니 다음과 같은 결과를 받을 수 있었습니다.
두 개의 차이점이 보이시나요?
마지막 줄바꿈이 \n으로 기대(expected) 했지만, 실제로(actual)는 \r\n로 출력된다는 것을 알게 되었습니다.
이 것은 제가 윈도우 OS를 사용하기 때문입니다.
윈도우는 줄바꿈을 \n이 아닌 \r\n로 동작을 하기 때문에 제 테스트 케이스가 실패하는 것입니다.
이 문제를 해결하는 방법은 간단합니다.
System.lineSeparator()을 사용하는 것으로 줄바꿈을 통일하는 것입니다.
이 코드를 사용하면 각 운영체제에 맞는 줄바꿈 형식으로 변환합니다.