HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
[팀 08] 사이코
[팀 08] 사이코
/
⛳
TestContainer를 이용한 Repository Layer 단위테스트
⛳

TestContainer를 이용한 Repository Layer 단위테스트

 

개요

  • 테스트를 위해서는 운영과 동일한 형태의 개발 환경에서 테스트 하는 것이 중요한데, 기존의 H2 DB를 사용하게 되면 운영 DB인 MySQL과 100% 호환된다는 보장이 없다.
    • ⇒ Repository Layer 단위테스트를 위한 TestContainer 라이브러리 도입
       

TestContainer

  • 테스트에서 도커 컨테이너를 자동으로 띄워주고 테스트가 종료되면 컨테이너도 종료해주는 라이브러리
  • 이 라이브러리리의 유일한 단점은 컨테이너를 생성, 삭제하기 때문에 테스트가 느려진다는 것이 있다.
 

테스트 하는 법

  • Docker가 로컬 환경에 설치되어있어야 한다.
 
  1. 엔티티별 테이블 생성 sql과 필요에 의하면 data sql 스크립트 작성
  1. 아래 세 개 애노테이션 삽입
      • @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) : 내장 DB를 사용하지 않는 것으로 설정하여 docker MySQL를 사용
  1. 기존과 동일한 방식으로 테스트 코드 작성
 

예시

@DataJpaTest @ActiveProfiles("test") @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) public class XXRepositoryTest { @Autowired XXRepository xxRepository; @Test void test() { // Test Code 작성 } }