Spring Boot 테스트 케이스 H2 적용기

김동영·2022년 2월 11일
0

OurMemory 프로젝트

목록 보기
2/6
  • 테스트 케이스 실행 시, 실제 DB로 테스트하다보니 키 인덱스가 증가하는 현상이 발생함.
    같은 사유 다른 사람 글 https://okky.kr/article/732917?note=2011578

  • 또한 실제 DB에 데이터가 적재되기 때문에 테스트 케이스 종료 시, 반드시 롤백처리가 필요.

    1. 이를 위해 케이스 메소드 별 @Transactional 어노테이션을 통해 메소드 종료 후 자동롤백되도록 설정함.
    2. 그 결과, 테스트 대상 서비스 메소드 진입 전 트랜잭션을 잡고 들어가기 때문에, 서비스 내에서 예외가 발생해도 테스트 메소드 종료 전까지 데이터가 롤백되지 않음.
    3. 이로 인해 DB 작업 중 예외가 발생하는 경우, 그 전까지 작업된 내용은 롤백되지 않기 때문에 서비스 검증이 불가능했음.
  • 위 문제들을 근본적으로 해결하기 위해 테스트 케이스에 한해 H2 데이터베이스에 연결되도록 환경 설정을 변경함.
    -> 테스트용 프로파일 작성(application-test.yml)
    -> 실제 운영 환경은 MySQL8 데이터베이스를 사용하기 때문에, 우선은 테스트 케이스에만 적용되도록 설정함.
    testRuntimeOnly 'com.h2database:h2:2.1.210'
    -> 추후, 로컬 환경에서도 H2 데이터베이스 사용이 필요한 경우, 로컬 환경 구성 예정.

  • 환경 구성에 참고한 글

  • 참고

profile
k8s, 프레임워크와 함께하는 백엔드 개발자입니다.

0개의 댓글