Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래밍문제
- Spring Data JPA
- 알고리즘
- 쿠버네티스
- Docker
- Spring Boot
- springboot
- 오일러프로젝트
- 스프링
- 로드밸런서
- 카프카
- 클라우드
- Elasticsearch
- 자료구조
- 스프링부트
- Spring
- 인천여행
- aws
- Apache Kafka
- DFS
- Kafka
- VPC
- 코드업
- 월미도
- 백트래킹
- gcp
- 백준
- 클라우드 컴퓨팅
- JPA
- 스프링 부트
Archives
- Today
- Total
GW LABS
스프링 부트 핵심 가이드 (5) - 테스트 코드 작성하기 본문
7.1 테스트 코드를 작성하는 이유
- 개발 과정에서 문제를 미리 발견할 수 있다.
- 리팩토링의 리스크가 줄어든다.
- 애플리케이션을 가동해서 직접 테스트하는 것보다 빠르게 테스트를 수행할 수 있다.
- 하나의 명세 문서로 활용할 수 있다.
- 불필요한 로직이 추가되는 것을 방지한다.
7.3 테스트 코드를 작성하는 방법
- Given-When-Then
- Given: 테스트를 수행하기 전 테스트에 필요한 환경설정
- When: 테스트의 목적을 명시
- Then: 테스트의 결과를 검증
- F.I.R.S.T
- Fast: 테스트는 빠르게 수행되어야 한다.
- Isolated: 하나의 테스트 코드는 하나의 대상에 대해서만 수행되어야 한다.
- Repeatable: 어떤 환경에서도 반복 가능해야 한다.
- Self-Validating: 테스트는 그 자체만으로도 검증이 완료되어야 한다.
- Timely: 테스트 코드는 테스트하려는 애플리케이션 코드를 구현하기 전에 완성되어야 한다.
7.4 JUnit을 활용한 테스트 코드 작성
- 생명주기
- BeforeAll: 테스트를 시작하기 전에 호출되는 메서드
- BeforeEach: 각 테스트 메서드가 실행되기 전에 동작하는 메서드
- AfeterAll: 테스트를 종료하면서 호출되는 메서드
- AfeterEach: 각 테스트 메서드가 종료되면서 호출되는 메서드
- 컨트롤러 테스트
- WebMvcTest: 웹에서 사용되는 요청과 응답에 대한 테스트 수행.
- MockBean: SpringBoot의 Mock객체 생성/주입 어노테이션
- Service 레이어를 Mocking하여 테스트를 수행한다.
- 슬라이스 테스트: 단위 테스트와 통합 테스트의 중간 개념으로, 각 레이어별로 나누어 테스트를 진행한다는 의미
- DataJdbcTest, DataJpaTest, JsonTest, RestClientTest 등의 어노테이션을 활용해서 각 레이어를 테스트!
- 서비스 테스트
- ExtendWith(MockitoExtension.class): Mockito Mock 객체들을 테스트에서 자동생성할 때 사용한다.
- InjectMocks: Mock 객체들을 자동으로 의존성 주입을 해준다.
- 리포지토리 테스트
- JPA 리포지토리의 기본 기능들의 경우 이미 검증이 되었기 때문에 테스트 코드 작성시에는 이유가 있어야한다.
- DataJpaTest: 리포지토리를 주입받을 수 있도록 하는 어노테이션
- AutoConfigureTestDatabase: 테스트 환경의 데이터베이스를 설정하는 어노테이션
'Book-Review > Programing' 카테고리의 다른 글
스프링 부트 핵심 가이드 (7) - 연관관계 매핑 (0) | 2022.08.17 |
---|---|
스프링 부트 핵심 가이드 (6) - Spring Data JPA 활용 (0) | 2022.08.16 |
스프링 부트 핵심 가이드 (4) - 데이터베이스 연동 (0) | 2022.08.13 |
스프링 부트 핵심 가이드 (3) - API를 작성하는 다양한 방법 (0) | 2022.08.12 |
스프링 부트 핵심 가이드 (2) - 개발에 앞서 알면 좋은 기초 지식 (0) | 2022.08.11 |
Comments