본문 바로가기
Spring | SpringBoot

[스프링 스터디] 1주차. 단위테스트, 롬복

by saniii 2022. 5. 7.

공부하는 책 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱 지음

공부한 Github : https://github.com/anso33/jojo.springboot-example.git 


  • 견고한 서비스를 만들기 위해서는 TDD, 적어도 테스트코드를 작성하면서 진행해야한다. 
    • TDD : 테스트가 주도하는 개발
      • 테스트 코드를 먼저 작성한다. 
    • 단위 테스트 : 기능 단위의 테스트 코드를 작성
      • 장점1 : 코드에 대한 결과(피드백)확인이 빠르다.
      • 장점2: 자동검증이 가능하다.
      • 장점3: 새로 코드를 추가하고자 할 때 개발자가 만든 기존의 기능이 잘 작동함을 보장한다. 
      • 테스트 코드 작성할 때 사용하는 프레임워크
        • ex) JAVA - JUnit, DB - DBUnit, C++ - CppUnit, ...
  • 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성을 자동으로 설정해주는 것이 @SpringBootApplication이며 이 애노테이션이 있는 위치부터 설정을 읽어나가기 때문에 @SpringBootApplication은 항상 프로젝트의 최상단에 있어야한다. 
  • 스프링 부트에서 내장 WAS을 사용하는 것을 권장하는 이유
    • 언제 어디서나 같은 환경에서 스프링 부트를 배포할 수 있다!
  • 롬복 (Lombok)
    • Getter, Setter, 기본 생성자, toString 등을 애노테이션으로 자동 생성한다. 

 

 

 

 

 

 

# 애노테이션 혹은 함수 

  • @RestController : 컨트롤러를 JSON을 반환하는 컨트롤러로 만들어준다. 
  • @GetMapping : HTTP Method인 Get의 요청을 받을 수 있는 API를 만들어 준다. 
  • @RunWith(SpringRunner.class) : 테스트를 진행할 때 Unit에 내장된 실행자외에 다른 실행자를 실행시킨다.
    • 스프링 부트 테스트와 JUnit 사이의 연결자 역할
  • @WebMvcTest : 여러 스프링 테스트 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션
    • @Controller, @ControllerAdvice등은 사용할 수 있지만 @Service, @Component, @Repository등은 사용할 수 없다.
  • @Autowired : 스프링이 관리하는 빈(Bean)을 주입받는다. 
  • private MockMvc mvc : 웹 API를 테스트할 때 사용
    • HTTP GET, POST 등에 대한 API 테스트를 할 수 있다. 
  • mvc.perform(get("/hello")) : /hello 주소로 HTTP GET 요청
  • .andExpect(status().isOK()) : HTTP Header의 Status를 검증 (200인지 아닌지)
  • .andExpect(content().string(hello)) : 응답 본문의 내용을 검증

 

  • Getter : 선언된 모든 필드의 get 메소드를 생성한다.
  • RequiredArgsConstructor : 선언된 모든 final 필드가 포함된 생성자를 생성
  • assertThat : 검증하고 싶은 대상을 메소드 인자로 받음
    • assertj (테스트 검증 라이브러리의 검증 메소드)
  • isEqualTo : 동등 비교 메소드
    • assertj (테스트 검증 라이브러리의 검증 메소드)
  • RequestParam : 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션
  • param("", ) : API 테스트할 때 사용될 요청 파라미터를 설정 
  • jsonPath : JSON 응답값을 필드별로 검증할 수 있는 메소드

 

 

 

 

 

라이브러리와 프레임워크의 차이는 무엇인가 ??????!?!?!?!!?!?!?

 

 

 

java.lang.ClassCastException: org.springframework.test.web.servlet.result.JsonPathResultMatchers cannot be cast to org.springframework.test.web.servlet.ResultMatcher

 

댓글