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의 응답 결과에서 한글이 깨지는 현상이 발생하였다.

스크린샷 2021-05-22 오전 2 33 18

What The F...

한글 깨짐 현상이 발생한 이유는 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();
    }
}

스크린샷 2021-05-22 오전 2 35 47

예쁘게 한글로 잘 나오는 것을 확인할 수 있다.

Reference

https://github.com/HomoEfficio/dev-tips/blob/master/Spring%20Test%20MockMvc%EC%9D%98%20%ED%95%9C%EA%B8%80%20%EA%B9%A8%EC%A7%90%20%EC%B2%98%EB%A6%AC.md



© 2022. by minkuk

Powered by minkuk