[JPA] 테스트 코드에선 왜 쿼리가 안 날라갈까?

이동엽·2023년 3월 21일
5

jpa

목록 보기
4/8
post-thumbnail

개요

졸업 작품의 간단한 초기 기능들을 작성하고, 제대로 동작하는지 테스트 코드를 작성해 결과를 확인하던 중이였다.

내가 작성한 테스트에서는 Member와 Review 인스턴스를 생성 후 저장하고 조회하는 로직이 있는데,
저장을 위한 Insert 쿼리나 조회를 위한 Select 쿼리가 날라가지 않음을 결과창에서 볼 수 있다!

처음엔 ‘application.yml 설정을 잘못 했나? ’ 라는 생각이 들던 찰나, 그건 아니였다!

→ 왜냐면, 테스트가 아닌 애플리케이션을 실행한 뒤 API를 통해 보낸 요청에서는 모든 쿼리가 잘 날라갔기 때문!


💡 그럼 뭐가 문제일까?

두 가지를 간과했던 나

  • 현재 테스트 코드를 작성 중이다.
    • @Transactional 어노테이션을 붙여 최종 실행 결과를 DB에 반영하지 않고 롤백 시켰다.
  • 또한 JPA는 쓰기 지연이라는 이점을 제공한다.

💡 테스트를 진행하며 쿼리가 날라가는 지 확인하고 싶다면 아래와 같이 해보자!

  1. Rollback(false) 설정해주기

  1. flush() 메서드를 이용해 강제로 쓰기 지연 저장소를 비운다!

💡 교훈

JPA의 특징과 @Transactional 에 대해 다시 한번 복습할 필요가 있다!

profile
백엔드 개발자로 등 따숩고 배 부르게 되는 그 날까지

2개의 댓글

comment-user-thumbnail
2023년 3월 22일

뒷북치시네요. 잘봤습니다.

답글 달기
comment-user-thumbnail
2023년 3월 26일

잘 보고 갑니다. 😃

답글 달기