-
TestContainer 적용해보기🐳Dev 2022. 12. 5. 17:18
wix-embedded-mysql을 통해 Repository를 테스트 하던 중, wix의 깃허브에서 더 나은 방안으로 TestContainer를 추천해주었다.
그래서 TestContainer를 한번 사용하고 이를 정리해보려고 한다.
TestContainer란
- Junit test를 지원하는 Java 라이브러리로, 테스트를 위한 Docker의 일회용 컨테이너를 제공한다
- 테스트 시에 자동으로 DB 컨테이너를 띄워주고, 테스트가 종료되면 컨테이너도 함께 종료된다
사용하기
의존성 추가하기
testImplementation "org.junit.jupiter:junit-jupiter:5.8.1" //1 testImplementation "org.testcontainers:junit-jupiter:1.17.6". testImplementation "org.testcontainers:mysql:1.17.6" //2
- spring initializer를 사용하여 프로젝트를 생성하였다면, spring-boot-starter-test와 함께 junit-jupiter가 이미 설치되어 있다!
- 해당 프로젝트에서는 mysql을 사용하고 있어, mysql 테스트 컨테이너를 받아왔다.
Properties 설정
properties에서 datasource의 url과 driver-class-name을 설정해준다.
spring.datasource.url=jdbc:tc:mysql:8.0.31:///test?TC_INITSCRIPT=schema.sql spring.datasource.driver-class-name=org.testcontainers.jdbc.ContainerDatabaseDriver
- 기본 url 설정 jdbc:tc:{docker image}:///{db}
- jdbc:mysql://{host}:{post}/{db} 와 비교해보자
- 계정은 root으로 설정되며, database는 url에 명시해준 이름으로 생성된다
- 초기 데이터나 스키마 생성을 위해서 ?TC_INITSCRIPT={schema file}를 추가한다
Code
위와 같이 테스트가 돌아가는 클래스에 테스트 컨테이너를 만들어주면 된다. 이외에도 다양한 설정이 가능하다.
테스트를 실행할 때, 이렇게 고래 이모지와 함께 testcontainer 관련 로그가 찍히는 것을 볼 수 있다!
Reference
https://mangchhe.github.io/test/2022/07/22/TestContainers/
'🐳Dev' 카테고리의 다른 글
[Lombok] @RequiredArgsConstructor에 @Qualifier를 적용하는 방법 (0) 2023.05.21