[Spring Boot] 70. 스프링부트 블로그 v3 (RestAPI) (15) 통합테스트 7 - 전체 테스트

김주희's avatar
May 13, 2025
[Spring Boot] 70. 스프링부트 블로그 v3 (RestAPI) (15) 통합테스트 7 - 전체 테스트
notion image
update에 의해 제목1수정 내용1수정이라고 update 된 제목1 데이터를 확인하게 되어서 expect와 다르다 라고 문제 발생
notion image
notion image
 
 

해결하는 방법
개발자들은 순서를 부여하려고 함
@Order(1) 이런걸 걸어서
테스트란 뭐가 먼저 실행되든 되야한다. 순서에 의존하면 안된다.
f-ds-i-c-s-r을 한번에 실행하는거 = 하나의 컨베이어벨트가 돌아가는 것 → 이걸 다른거에 의존하면 안된다.
 
@Transactional : 서비스에서는 transactional 종료시 commit 테스트에서는 rollback됨
 
annotation이 들고 있는 annotation을 meta annotation이라고 함
단위테스트에서 썻던 DataJpaTest는 Transactional을 가지고 있음
SpringBootTest는 안들고 있기 때문에 추가해준다.
notion image
notion image
 
Transactional이 못하는거
1-20개 게시글
  1. 업데이트 - 제목1, 내용1 → 제목수정1, 내용수정1
  1. 게시글 한 건 보기 - 제목1, 내용1 검증X
 
  1. 게시글쓰기 - 제목21, 내용21
  1. 게시글 한 건 보기(21) - 제목21, 내용21 검증X → 롤백할거면 불가능
 
  1. 게시글쓰기 v1 - 21, 제목21, 내용21 → 21, 제목21, 내용21 (검증)
  1. 게시글쓰기 v2 - 22, 제목21, 내용21 → 22, 제목21, 내용21 (검증)
  1. 게시글쓰기 v3 - 23, 제목21, 내용21 → 23, 제목21, 내용21 (검증)
rollback한다고 auto increament는 초기화 안됨 → 21에서 대기함
그리고 1,2 순서 보장 안되므로 문제 생길지도
⇒ transactional로 해결 안됨 teardown을 사용한다.
테스트코드는 성공만 주는게 아니라 실패를 줄 수도 있음( → 그래야 프론트에서 알 수 잇으니까)
→ 너무 세세한건 말고 핵심적인 유효성 검사 같은거라던지.. 예를들어서 400, 실패 이런걸로 검증해두는
 
notion image
실제 db 테이블 사용x 테스트를 위한 더미 사용
(— 모든 제약조건 비활성화
SET REFERENTIAL_INTEGRITY FALSE;
truncate table user_tb;
truncate table user_tb;
truncate table user_tb;
SET REFERENTIAL_INTEGRITY TRUE;
— 모든 제약조건 활성화)
실제 db 테이블 사용하면 pk로 인해 영향을 받음→ 검증해야하는 경우가 있어서 검증 안하면 되잖아요 이게 안됨
1번만 조회되도록 하는게 좋음
 
 

개발전용 파일 - profile..?
근데 지금 설정하지는 않고 이런ㄱ ㅔ 있다 알아둬욧 → aws 배포할때 할거야
notion image
 
@ActiveProfiles(”test”) → application-test.yml 을 찾아냄 즉 application- 뒷부분과 일치하는 파일 찾아서
Share article

jay0628