개요
- 테스트를 위해서는 운영과 동일한 형태의 개발 환경에서 테스트 하는 것이 중요한데, 기존의 H2 DB를 사용하게 되면 운영 DB인 MySQL과 100% 호환된다는 보장이 없다.
⇒ Repository Layer 단위테스트를 위한 TestContainer 라이브러리 도입
TestContainer
- 테스트에서 도커 컨테이너를 자동으로 띄워주고 테스트가 종료되면 컨테이너도 종료해주는 라이브러리
- 이 라이브러리리의 유일한 단점은 컨테이너를 생성, 삭제하기 때문에 테스트가 느려진다는 것이 있다.
테스트 하는 법
- Docker가 로컬 환경에 설치되어있어야 한다.
- 엔티티별 테이블 생성 sql과 필요에 의하면 data sql 스크립트 작성
- 아래 세 개 애노테이션 삽입
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
: 내장 DB를 사용하지 않는 것으로 설정하여 docker MySQL를 사용
- 기존과 동일한 방식으로 테스트 코드 작성
예시
@DataJpaTest @ActiveProfiles("test") @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) public class XXRepositoryTest { @Autowired XXRepository xxRepository; @Test void test() { // Test Code 작성 } }