[java] TestContainers로 데이터 마이그레이션 테스트하기

이번 블로그에서는 TestContainers 라이브러리를 사용하여 데이터 마이그레이션 테스트를 어떻게 수행하는지 알아보겠습니다. TestContainers는 Docker 컨테이너를 사용하여 통합 테스트 환경을 구축하는 라이브러리로, 데이터 마이그레이션 테스트 또한 쉽게 수행할 수 있습니다.

목차

TestContainers란?

TestContainers는 도커 컨테이너를 사용하여 테스트 환경을 구축하는 Java 라이브러리입니다. 테스트 시에 외부 서비스, 데이터베이스, 메시징 시스템 등을 도커 컨테이너로 실행하여, 통합 테스트 환경을 쉽게 구성할 수 있습니다.

데이터 마이그레이션 테스트의 경우, 일반적으로 테스트 데이터베이스를 구축하고 초기 데이터를 추가하는 작업이 필요합니다. TestContainers를 사용하면 마이그레이션 스크립트가 실행된 후에 초기 데이터를 로드하기 위한 데이터베이스 컨테이너를 쉽게 설정할 수 있습니다.

데이터 마이그레이션 테스트 예시

다음은 TestContainers를 사용하여 데이터 마이그레이션 테스트를 수행하는 예시 코드입니다.

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.lifecycle.Startable;

public class DataMigrationTest {
    
    private static PostgreSQLContainer postgresContainer;
    
    @BeforeAll
    public static void startContainers() {
        postgresContainer = new PostgreSQLContainer("postgres:latest")
                .withDatabaseName("testdb")
                .withUsername("testuser")
                .withPassword("testpassword")
                .withExposedPorts(5432)
                .waitingFor(
                        Wait.forListeningPort()
                );
        
        postgresContainer.start();
    }
    
    @AfterAll
    public static void stopContainers() {
        if (postgresContainer != null) {
            postgresContainer.stop();
        }
    }

    @Test
    public void testMigration() {
        // 데이터 마이그레이션 테스트를 위한 코드 작성
    }
}

위 예시 코드에서는 PostgreSQL 데이터베이스를 사용하여 데이터 마이그레이션 테스트를 수행합니다. @BeforeAll 어노테이션을 통해 테스트 컨테이너를 시작하고, @AfterAll 어노테이션을 통해 테스트 컨테이너를 중지합니다.

testMigration 메소드에서는 데이터 마이그레이션 테스트를 위한 코드를 작성하면 됩니다. 이 메소드 내에서는 테스트 데이터베이스에 초기 데이터를 추가하거나 마이그레이션 스크립트를 실행하는 등의 작업을 수행할 수 있습니다.

결론

TestContainers를 사용하면 데이터 마이그레이션 테스트를 편리하게 수행할 수 있습니다. 도커 컨테이너를 사용하여 테스트 환경을 구축하고, 초기 데이터를 로드하거나 마이그레이션 스크립트를 실행하는 작업을 간편하게 수행할 수 있습니다. 데이터 마이그레이션 테스트를 자동화하고 싶다면 TestContainers를 고려해보세요.

참고 자료