In-memory service나 mock 없이 통합 테스트 환경에서 Docker 이미지 기반으로 DB, 메시지 브로커, 검색엔진 등의 테스트 인프라를 간단하게 구성할 수 있다.
특히 클라우드 환경의 MSA에서 유용하다.
JUnit을 이용한 테스트에서는 아래와 같이 사용한다.
testImplementation "org.junit.jupiter:junit-jupiter:5.8.1"
testImplementation "org.testcontainers:testcontainers:1.19.7"
testImplementation "org.testcontainers:junit-jupiter:1.19.7"
의존성을 설정하고
@Testcontainers
class TokenReplayIntegrationTest {
@Container
private static final RedpandaContainer REDPANDA_CONTAINER = new RedpandaContainer(
"docker.redpanda.com/vectorized/redpanda:v22.2.1");
...
위 처럼 kafka 통합 테스트 환경을 RedPanda를 이용하여 구성할 수도 있고
...
OracleContainer oracleContainer = new OracleContainer("gvenzl/oracle-xe:21-slim-faststart")
.withDatabaseName("testDB")
.withUsername("testUser")
.withPassword("testPassword")
...
위 처럼 DB 통합 테스트 환경을 구성할 수도 있다.