Springboot 테스트 코드 한글 깨짐 현상 (feat. JUnit 5)
테스트 코드에서 한글이 깨질 때
@SpringBootTest
@AutoConfigureMockMvc
public abstract class AbstractMvcTest {
@Autowired
protected MockMvc mockMvc;
}
public class BoardTest extends AbstractMvcTest {
@Test
@DisplayName("게시글 작성 테스트")
public void create() throws Exception {
PostDTO postDTO = PostDTO.builder()
.title("오늘도 공부")
.content("룰랄라")
.build();
String data = JacksonUtil.toJson(postDTO);
this.mockMvc
.perform(post("/api/post")
.contentType(MediaType.APPLICATION_JSON)
.content(data))
.andDo(print())
.andExpect(status().is(HttpStatus.OK.value()))
.andExpect(jsonPath("$.title").exists());
}
}
토이프로젝트를 진행하던 중 MockMvc의 응답 결과에서 한글이 깨지는 현상이 발생하였다.
한글 깨짐 현상이 발생한 이유는 MockMvc에 인코딩 설정이 없어서 그렇다.
아래와 같이 MockMvc 셋팅을 스프링에서 기본으로 해주는 세팅에 의존하지 말고 직접 빌더를 통해 MockMvc를 셋팅해주자.
@SpringBootTest
public abstract class AbstractMvcTest {
protected MockMvc mockMvc;
@Autowired
private WebApplicationContext ctx;
@BeforeEach
void setup() {
this.mockMvc = MockMvcBuilders
.webAppContextSetup(ctx)
.addFilters(new CharacterEncodingFilter("UTF-8",true))
.alwaysDo(print())
.build();
}
}
예쁘게 한글로 잘 나오는 것을 확인할 수 있다.