이 글은 '스프링부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱(jojoldu)'을 공부하며 작성한 글입니다.
참고 깃허브 https://github.com/jojoldu/freelec-springboot2-webservice
http://www.yes24.com/Product/Goods/83849117
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - YES24
가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링
www.yes24.com
스프링부트 프로젝트에서 테스트 코드를 작성하고자 한다.
- TDD(Test Driven Development): 테스트 주도 개발로 테스트 코드를 먼저 작성한다.
- 단위테스트(Unit Test): TDD의 첫번째 단계인 기능 단위의 테스트 코드를 작성하는 것으로 하나의 모듈을 기준으로 독립적으로 작동하는 가장 작은 단위의 테스트를 말한다.
단위 테스트 작성 이유
- 개발 단계 초기에 문제 발견 가능
- 추가 구현 뒤, 기존 기능이 올바르게 동작하는 지 확인하기 용이하다.
- 기능에 대한 불확실성을 감소시킬 수 있다.
- 단위 테스트는 시스템에 대한 실제 문서를 제공 -> 단위테스트로 테스트 문서로 사용 가능
교재에서는 단위 테스트 코드 작성법에 대해 배운다.
Application.java 생성 (com.project.webservice에 위치)

- @SpringBootApplication이 있는 위치부터 설정을 읽는다. -> Application 클래스는 프로젝트 최상단에 위치해야 한다.
- SpringAppliction.run으로 내장 was 실행 (내장 was가 있어 매번 서버에 톰캣을 설치할 필요가 없음)
- 언제 어디서나 같은 환경에서 스프링 부트를 배포하기 위해 내장 was 사용을 권장한다.
test할 api 작성 - HelloController.java (com.project.webservice.web에 위치)
- @RestController: 컨트롤러를 JSON으로 반환하는 컨트롤러로 만든다.
- @GetMapping: HTTP Method인 GET의 요청을 받을 수 있는 api라는 의미
test 작성
- @ExtendWith: 스프링 부트 테스트와 JUnit 사이에 연결자 역할로 여기서는 테스트 진행시 JUnit에 내장된 실행자말고 SpringExtension라는 스프링 실행자 사용한다.
교재에서는 @RunWith(SpringRunner.class)라고 되어있는 데, Junit5가 되면서 변경되었다.
다른 설명은 코드에 주석으로 작성해두었다.
테스트 결과 성공
lombok으로 테스트 전환하기
- 롬북(lombok): Getter, Setter, 기본생성자,toString등을 어노테이션으로 자동 생성해준다.
롬북을 인텔리제이에 설치하고 프로젝트 build.gradle의 dependencies에 등록한다.
implementation('org.projectlombok:lombok')
이때, 롬북으로 변경하고 문제가 생기는지 테스트 코드를 통해 확인할 수 있다.
HelloResponseDto.java 생성 (com.project.webservice.web.dto에 위치)
- @Getter: 선언된 모든 필드의 get 메소드 생성
- @RequiredArgsConstructor: final 필드가 포함된 생성자 생성 (final이 없는 필드는 생성자에 포함하지 않는다.)
롬북테스트 작성
- assertThat: assertj라는 테스트 검증 라이브러리의 메소드
- isEqualsTo: assertj의 동등비교 메소드로 두 값이 같다면 성공
테스트 결과 성공
HelloController에도 새로 만든 ResponseDto를 사용하기
ResponseDto를 사용하는 api 작성 및 테스트
위에서 작성한 HelloController와 HelloCtrollerTest에 코드를 추가한다.
ResponseDto를 사용하는 api 작성
test 작성
테스트 결과 성공
'스프링부트와 AWS로 혼자 구현하는 웹서비스' 카테고리의 다른 글
스프링 부트 서버 템플릿 엔진과 클라이언트 템플릿 엔진 차이 (feat. 머스테치 사용법) (2) | 2023.03.01 |
---|---|
스프링 부트 JPA Auditing 생성/수정시간 자동화 (0) | 2023.02.25 |
스프링 부트 Spring Data JPA 적용 및 등록,수정,조회 API 작성하기 (0) | 2023.02.24 |
그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기 (0) | 2023.02.24 |
스프링부트 프로젝트 윈도우에서 빌드하고 실행하기 (0) | 2023.02.18 |
댓글