인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

bill0923님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

스프링 메시지 소스 사용

helloMesage 테스트 관련 안녕이 아닌 hello가 나오는 오류

작성

·

134

·

수정됨

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
질문은 아니지만 저와 같은 오류를 가진 분을 위해 남깁니다.

기본적으로 MessageSource는 locale이 null일때 Locale.getDefault()의 결과 값을 이용합니다.

이 값은 JVM의 기본 locale을 가져오므로, 만약 이 값이 en_US 등으로 설정이 되어있다면, 안녕이 아닌 hello가 출력되어 test가 실패하게 됩니다.

저와 같은 오류를 겪는 분이 있다면 시스템의 기본값으로 적용되는구나 이해하고, 그 Test에 한해서만 Locale.setDefault(Locale.KOREA) 로 설정하시면 테스트는 통과할겁니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. bill0923님.

현재의 문제는 메시지 소스 사용 시 JVM의 기본 로케일 설정에 따라 다른 결과가 나오는 상황으로 보입니다. 이 경우는 JVM의 기본 로케일이 한국어가 아닌 영어나 다른 언어로 설정되어 있어 안녕이 아닌 hello가 출력되어 테스트가 실패하는 경우입니다. 이를 해결하기 위해서, 테스트를 실행할 때 locale=Locale.KOREA로 설정해주시면 한국어로 메시지를 가져올 수 있습니다.

이 문제를 해결하는 데 도움이 될 관련 질문과 답변들이 있습니다:

  1. 자문자답 helloMessage() 에러 참고하세요에서 기본 Locale을 한시적으로 한국어로 변경하는 방법이 설명되어 있습니다. 강의 코드에 Locale.setDefault(Locale.KOREA);를 추가하여 해결할 수 있습니다.

  2. 한글 깨짐현상에서도 Locale 설정 문제로 인해 한글이 깨지거나 다른 메시지가 출력될 수 있는 문제를 다루고 있습니다. 링크를 참조하여 시스템 로케일을 확인하고 설정할 수 있습니다.

Locale.setDefault(Locale.KOREA);를 설정하는 것이 시스템 전반에 영향을 미치기 때문에 테스트 범위 내에서만 사용하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

bill0923님의 프로필 이미지

작성한 질문수

질문하기