[SpringBoot] 테스트 코드 작성하기 - 기초

C____JIN·2022년 10월 12일
0

SpringBoot

목록 보기
3/6
post-thumbnail

Controller 생성

//HelloController.java
@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}
  • @RestController : 컨트롤러를 JSON을 반환하는 컨트롤러로 만들어 줌
  • @GetMapping : Get 요청을 받을 수 있는 API 생성

테스트 코드 작성

//HelloControllerTest.java
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class)
public class HelloControllerTest {

    @Autowired
    private MockMvc mvc;

    @Test
    public void hello가_리턴된다() throws Exception {
        String hello = "hello";

        mvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
    }
}
  • @RunWith(SpringRunner.class) : 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행

    • 여기에서는 SpringRunner라는 스프링 실행자를 사용
    • 스프링 부트와 JUnit 사이에 연결자 역할
  • @WebMvcTest : Web(Spring MVC)에 집중할 수 있는 어노테이션

    • 선언할 경우, @Controller,@ControllerAdvice 등을 사용
    • 단, @Service, @Component, @Repository 등은 사용할 수 없음
  • @Autowired : 스프링이 관리하는 빈(Bean)을 주입받음

  • privat MockMvc mvc

    • 웹 API를 테스트할 때 사용
    • 스프링 MVC 테스트의 시작점
    • 이 클래스를 통해 HTTP GET,POST 등에 대한 API 테스트 수행가능
  • mvc.perform(get("/hello")) : MockMvc를 통해 /hello 주소로 HTTP GET 요청

  • .andExpect(status().isOk())

    • mvc.perform의 결과를 검증
    • HTTP Header의 Status를 검증
      • 200, 404, 500 등의 상태를 검증
      • 여기선 OK (200)인지 아닌지 검증
  • andExpect(content().string(hello))

    • mvc.perform의 결과를 검증
      • 응답 본문의 내용을 검증

참고

이동욱, 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

profile
개발 블로그🌐 개발일지💻

0개의 댓글