앞서 pom.xml 에 인코딩 정보를 설정하고, Ubuntu 의 환경변수를 설정해 Locale, Encoding을 변경하는 작업을 했었다. 빌드할 때, 인코딩 문제가 발생해 특정결과가 나오지 않아서 ERROR가 발생하게 할 수 있는 방법은 없었을까?
테스트 케이스를 작성해 Guillimet 기호가 원래 역할을 하고있는지 확인하면 되지 않았을까?
xtend-maven-plugin
Xtend 로 작성한 파일을 빌드한다. 인코딩 설정에 따라 빌드 결과물이 다르다.
HelloTemplate.xtend
name 으로 Junha를 받으면 "Hello Junha" 를 반환하도록 작성한 코드이다.
MS949
Xtend Expression 을 제대로 이해하지 못해 "Hello «name»" 전체를 그대로 문자열로 처리했다. name 에 어떤 값을 입력하더라도 "Hello «name»" 을 반환한다.
UTF-8
Xtend Expression 을 제대로 이해해 Java 코드로 변환하였다. 자바 코드를 읽을 수 있다면 어떤 값을 반환할 지 알수 있다. 원래 의도대로 컴파일된 것을 확인할 수 있다.
그러면, 테스트코드를 이용해 인코딩이 제대로 설정되었는지 확인할 수 있다.
테스트 케이스 작성
User.java
UserTest.java
User 객체의 생성자에 이름을 입력하고, greetings() 메서드를 호출하면, HelloTemplate.sayHello() 에서 문자열을 반환한다. 인코딩이 제대로 설정되어있다면, 테스트 케이스를 통과할 것이고, 그렇지 않다면, 테스트 케이스를 통과하지 못할 것이다.
MS949 인코딩 설정 테스트 결과
Eclipse 에서 Project의 encoding 을 UTF-8 로 설정하지 않으면 "«,»" 기호가 "짬, 쨩" 으로 나온다. 따라서 테스트 케이스를 통과하지 못하고, 빌드에 실패하게 된다.
마치며
Xtend Template Engine을 변수를 포함하는 문자열을 쉽게 작성할 수 있다. Xtend 언어로 작성한 Template 도 결국에는 String 문자열이므로, 컴파일 과정에서 아무런 문제가 없었다. 실제 실행해서 Template 코드가 제대로 동작하는지 눈으로 확인하기 전까지 알수도 없었다.
본 포스팅에서는 테스트 케이스를 작성해, Encoding 이슈로 발생할 수 있는 문제를 눈으로 확인하는 방법을 알아보았다. 테스트 케이스를 작성하는 것으로, 빌드 과정에서 문제점을 파악할 수 있고, 고객에게 제품이 전달되기 전에 문제를 해결할 수 있을 것이다.
'Maven > Encoding 설정' 카테고리의 다른 글
Docker Ubuntu Locale 설정으로 Maven Default Encoding 변경하기 (0) | 2021.11.18 |
---|---|
Maven의 Default Encoding 정보 (0) | 2021.11.18 |