[JUnit5 오류] mustache 한글만 출력 오류 인코딩 오류
2024. 3. 15. 10:29ㆍ프레임워크(Framework)/Spring
스프링 부트 버전 3.2.3
[index.mustache]
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>스프링 부트 웹서비스</title>
</head>
<body>
<h1>스프링 부트로 시작하는 웹 서비스</h1> //한글 사용
</body>
</html>
[IndexController]
package com.dan.springbootwebservice.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController {
@GetMapping("/") //앞의 경로 src/main/resources/templates로 설정(mustache 자동)
public String index() {
return "index";
}
}
[IndexControllerTest]
package com.dan.springbootwebservice.web;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class IndexControllerTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void 메인페이지_로딩() {
//when
String body = this.restTemplate.getForObject("/", String.class);
//then
assertThat(body).contains("스프링 부트로 시작하는 웹 서비스"); //한글 사용
}
}
다음과 같은 코드에서 테스트를 돌려보았더니 오류가 발생하였다.
한글이 인식이 안되는 것 같아 "스프링 부트로 시작하는 웹 서비스"를 영어(ex titleeee) 로 바꾸어 주었더니 테스트가 성공하였다.
하지만 계속 영어나 숫자로 테스트를 할 수는 없기 때문에 해결을 해보았다.
문제의 원인은 스프링 부트 2.7.X 버전 이상부터는 한글 깨짐이 발생한다고 한다.
[해결 방법1 - application.properties에 추가]
server.servlet.encoding.force-response=true
server.servlet.encoding.force-response는 HTTP 응답의 인코딩을 강제로 설정하는데 사용되는 속성이다.
서버는 모드 응답을 설정된 인코딩으로 변환하여 클라이언트로 전송한다.
[해결 방법2 - 스프링 부트 버전 내리기]
스프링 부트 버전을 2.6.x로 내려주기
개인적으로 굳이 스프링 버전을 내리고 싶지는 않았기 때문에 나는 해결방법 1을 통해 문제를 해결하였다.
'프레임워크(Framework) > Spring' 카테고리의 다른 글
[Spring] IntelliJ Live template (0) | 2024.04.18 |
---|---|
[Spring Boot] WebSecurityConfigurerAdpater 지원 안함 (0) | 2024.03.18 |
[Spring] @RequiredArgsConstructor이란? (0) | 2024.03.07 |
[Spring] 어노테이션(Annotation)이란? (0) | 2024.02.27 |
entity에서 id값을 Long으로 지정하는 이유 (0) | 2024.02.20 |