[java] TestContainers로 샘플 데이터 생성하기

TestContainers란?

TestContainers는 자바 애플리케이션을 위한 도커 기반의 통합 테스트 라이브러리입니다. 이 라이브러리를 사용하면 테스트 중에 임시로 도커 컨테이너를 생성하여 데이터베이스나 메시지 브로커 등 외부 종속성을 테스트할 수 있습니다.

TestContainers를 사용하여 샘플 데이터 생성하기

TestContainers를 사용하여 샘플 데이터를 생성하는 방법을 살펴보겠습니다. 다음은 MySQL 데이터베이스를 사용하는 예제입니다.

먼저, pom.xml 파일에 TestContainers 의존성을 추가합니다:

<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>testcontainers</artifactId>
    <version>1.15.3</version>
    <scope>test</scope>
</dependency>

다음으로, 테스트 클래스를 작성하고 @Container 어노테이션을 사용하여 MySQL 컨테이너를 생성합니다:

import org.junit.jupiter.api.Test;
import org.testcontainers.containers.MySQLContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;

@Testcontainers
public class SampleDataTest {

    @Container
    private MySQLContainer mySQLContainer = new MySQLContainer()
            .withDatabaseName("test")
            .withUsername("root")
            .withPassword("password");

    @Test
    public void whenSampleDataGenerated_thenDataExists() {
        // 데이터 생성 및 확인 로직 작성
    }
}

위의 예제에서는 MySQL 컨테이너를 생성하고 withDatabaseName, withUsername, withPassword 메서드를 사용하여 데이터베이스와 인증 정보를 설정합니다.

whenSampleDataGenerated_thenDataExists 메서드에서는 샘플 데이터를 생성하고 확인하는 로직을 작성하면 됩니다.

TestContainers는 테스트 실행되기 전에 컨테이너를 시작하고 테스트가 완료되면 컨테이너를 중단합니다. 이를 통해 테스트 데이터를 생성하고 정리하는 작업이 자동으로 이루어집니다.

참고 문헌: