[스프링] 스프링 MVC 컨트롤러 테스트

이번 글에서는 스프링 MVC 애플리케이션에서 컨트롤러를 테스트하는 방법에 대해 알아보겠습니다.

테스트 환경 설정

테스트를 위해 JUnit을 사용할 것이므로, 프로젝트에 JUnit 의존성을 추가해야 합니다.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.3.12</version>
    <scope>test</scope>
</dependency>

@RunWith 어노테이션으로 SpringJUnit4ClassRunner를 사용하여 스프링 컨텍스트를 로드하고 @WebAppConfiguration을 통해 웹 애플리케이션 환경을 설정합니다.

컨트롤러 테스트 작성

컨트롤러 테스트를 위해 MockMvc 객체를 사용합니다.

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup() {
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}

@AutowiredWebApplicationContext를 주입받아 MockMvc 객체를 초기화하고, @Before 메서드를 사용해서 초기화 작업을 수행합니다.

컨트롤러 테스트를 위한 예제 코드는 다음과 같습니다.

@Test
public void testGetEmployee() throws Exception {
    mockMvc.perform(get("/employee/{id}", 1))
           .andExpect(status().isOk())
           .andExpect(jsonPath("name", is("John Doe")));
}

위 예제는 “/employee/{id}” 엔드포인트에 대한 GET 요청을 보내어 응답 상태를 확인하고, 반환된 JSON 응답에서 name 필드가 “John Doe”인지 확인하는 테스트 코드입니다.

테스트 실행

테스트를 실행하려면 JUnit 테스트를 실행하도록 IDE나 빌드 도구를 이용하면 됩니다. 테스트가 성공적으로 완료되면 컨트롤러의 동작을 검증할 수 있습니다.

위와 같은 방식으로 스프링 MVC 애플리케이션에서 컨트롤러를 테스트할 수 있습니다.

참고 문헌

  1. 스프링 공식 문서
  2. Baeldung. “Spring MVC Test Framework”