본문 바로가기
Programming

테스트 컨테이너 TestContainer를 이용한 단위/통합 테스트 환경 구성

by Renechoi 2023. 5. 23.

테스트컨테이너란 ? 

 

테스트 환경에서 독립적으로 실행되는 컨테이너로, 자바 라이브러리이다. 테스트 컨테이너를 사용함으로써 실제 환경과 유사하게 테스트 환경을 구사할 수 있고, 다양한 자동화가 가능하다. 

 

일반적으로 테스트 환경을 구성할 때 4가지 방식을 따른다. 

1. 로컬 db

2. 인메모리 db (h2) 

3. docker 

4. test container

 

테스트 컨테이너는 3번 도커의 방식과 유사하다고 할 수 있지만 보다 나은 편의성을 제공한다. 

- 자바 언어만으로 테스트 환경 구성

- docker를 따로 클린해주어야 하는 번거로움 없음 

 

무엇보다도 포트를 알아서 잡아주기 때문에 포트가 안잡혀서 docker db와 연동할 때 애먹는 문제를 겪지 않아도 된다! 

 

 


test container 환경 구성하기 

 

// testcontainers
testImplementation 'org.testcontainers:spock:1.17.1'
testImplementation 'org.testcontainers:mariadb:1.17.1'

 

yml 파일 구성 (test내의 resource 폴더 밑)

spring:
  datasource:
    driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
    url: jdbc:tc:mariadb:10:///
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true

kakao:
  rest:
    api:
      key: ${KAKAO_REST_API_KEY}


 


 

사용 사례 

 

 

test container를 사용한 crud 테스트 중 

docker ps 명령어로 실시간 도커로 올라오는 컨테이너를 확인해보면 다음과 같다. 

 

 

 

 


https://www.testcontainers.org

 

Testcontainers for Java

Testcontainers Not using Java? Here are other supported languages! About Testcontainers for Java Testcontainers for Java is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or

www.testcontainers.org

 

 

reference. 

10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online - part 7. 장원용님 

 

반응형