티스토리 뷰
007 테스트 추가하기: h2를 이용한 repository 테스트 - Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
rose3759 2024. 6. 19. 23:021. UserRepository 테스트 생성
2. 테스트를 위해 @DataJpaTest(showSql = true) 를 붙여줌.
3. test 설정을 위해 test-application.properties를 생성
3-1. 작성(복붙)
4. UserRepository가 Jpa가 H2랑 제대로 연결되었는지 확인을 위한 테스트 생성
4-1. User Entity를 적당히 생성.
4-2. User Entity save 호출
4-3. assertThat을 통해 not Null 이면 성공
5. 우리가 궁금한 것은 findByIdAndStatus 메서드와 findByEmailAndStatus 메서드가 제대로 동작하는지 여부임.
A) findByIdAndStatus 정상 조회
A-1. User Entity를 적당히 생성해 데이터를 저장
A-2. 결과값이 존재 여부를 확인
B) findByIdAndStatus 데이터가 없을 경우
B-1. User Entity를 적당히 생성하되, 유저 상태를 PENDING으로 설정 후 데이터를 저장
B-2. 결과값이 isEmpty()인지 확인
C) findByEmailAndStatus 정상 조회
C-1. User Entity를 적당히 생성해 데이터를 저장
C-2. 결과값이 존재 여부를 확인
D) findByEmailAndStatus 데이터가 없을 경우
D-1. User Entity를 적당히 생성하되, 유저 상태를 PENDING으로 설정 후 데이터를 저장
D-2. 결과값이 isEmpty()인지 확인
6. 단독으로는 실행이 됨. 하지만, 전체 테스트를 돌릴 경우 실패함.
-> 병렬로 처리될 때 동시성 제어가 안됨.
7. Test 코드 내에서 User Entity 값이 중복되어 생성되고 삽입되는 문제를 해결하기 위해 테스트할 때 준비된 값을 사용하도록 함.
-> @Sql(URL)
8. resources 폴더 내에 sql 파일을 생성해준 후 어노테이션에 SQL 파일을 지정해줌.
-> 이제 필요없어진 JPA와 H2 테스트를 제거
9. 이제 전체 동작 시키면 정상 동작함.
10. post Repository는 테스트할 메서드가 없으므로 패스.
-> 이전 강의에서 얘기했던, 잘 동작하도록 만들어진 JPA를 테스트할 필요는 없다는 것 참고.
11. 커버리지 측정 시 100% 나옴.
'개발 > Spring' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 중간발표
- server
- Grafana
- 육지행
- 글또
- 스터디
- 글로컬
- 10기
- 6팀
- 리빙랩
- it 동아리
- 파이썬
- spring boot
- test
- 백엔드
- Loki
- tdd
- 15기
- 연합 동아리
- AWS
- 서버
- 육.지.행
- 회고
- python
- 프로그래머스
- 해커톤
- 인프런
- 모니터링
- 디프만
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |