ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
    
    1. spring initializer를 사용하여 프로젝트를 생성하였다면, spring-boot-starter-test와 함께 junit-jupiter가 이미 설치되어 있다!
    2. 해당 프로젝트에서는 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/

    https://www.testcontainers.org/

    https://loosie.tistory.com/793

Designed by Tistory.