공부하는 책 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱 지음
공부한 Github : https://github.com/anso33/jojo.springboot-example.git
- 견고한 서비스를 만들기 위해서는 TDD, 적어도 테스트코드를 작성하면서 진행해야한다.
- TDD : 테스트가 주도하는 개발
- 테스트 코드를 먼저 작성한다.
- 단위 테스트 : 기능 단위의 테스트 코드를 작성
- 장점1 : 코드에 대한 결과(피드백)확인이 빠르다.
- 장점2: 자동검증이 가능하다.
- 장점3: 새로 코드를 추가하고자 할 때 개발자가 만든 기존의 기능이 잘 작동함을 보장한다.
- 테스트 코드 작성할 때 사용하는 프레임워크
- ex) JAVA - JUnit, DB - DBUnit, C++ - CppUnit, ...
- TDD : 테스트가 주도하는 개발
- 스프링 부트의 자동 설정, 스프링 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
'Spring | SpringBoot' 카테고리의 다른 글
oauth2-client 라이브러리를 이용하여 OAuth2 구현하기 (Kakao, Github) (1) | 2024.06.19 |
---|---|
[스프링 스터디] 2주차. JPA (0) | 2022.05.07 |
[스프링 스터디] 7주차 - 스프링 핵심 원리.기본편 (마지막) (0) | 2022.02.24 |
[스프링 스터디] 6주차 - 스프링 핵심 원리.기본편 (0) | 2022.02.17 |
[스프링 스터디] 5주차 - 스프링 핵심 원리.기본편 (0) | 2022.02.10 |
댓글