개요
- 테스트를 위해서는 운영과 동일한 형태의 개발 환경에서 테스트 하는 것이 중요한데, 기존의 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 작성 } }
![[팀 08] 사이코](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F95482992-37b2-4340-9a70-77909ee02ece%2F%25E1%2584%258E%25E1%2585%25A5%25E1%2586%25AF%25E1%2584%2589%25E1%2585%25AE.jpg?table=block&id=0de3b72d-52fa-4b81-ac88-2a87252cc0a4&cache=v2)