[java] JUnit에서 데이터베이스 초기화 및 마이그레이션 테스트하기

JUnit을 사용하여 데이터베이스 초기화 및 마이그레이션을 테스트할 수 있습니다. 데이터베이스 초기화는 애플리케이션의 처음 실행시 필요한 스키마 및 테이블을 생성하는 과정입니다. 마이그레이션은 애플리케이션의 버전 업데이트나 스키마 변경시 기존 데이터를 새로운 구조에 맞게 변환하는 과정입니다.

아래는 JUnit을 사용하여 데이터베이스 초기화 및 마이그레이션을 테스트하기 위한 예제입니다.

의존성 추가

먼저 프로젝트의 의존성에 JUnit과 데이터베이스 관련 라이브러리를 추가해야 합니다. 아래는 Gradle을 사용하는 경우의 예시입니다.

testImplementation 'junit:junit:4.12'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.testcontainers:testcontainers:1.16.0'
testImplementation 'org.testcontainers:postgresql:1.16.0'

컨테이너 설정

JUnit 테스트 클래스에서 데이터베이스 컨테이너를 설정해야 합니다. 컨테이너는 테스트용 데이터베이스를 구동하고 초기화 및 마이그레이션을 수행하는 역할을 합니다.

import org.junit.ClassRule;
import org.testcontainers.containers.PostgreSQLContainer;

public class DatabaseTest {
    @ClassRule
    public static PostgreSQLContainer postgresContainer =
        new PostgreSQLContainer("postgres:13.2")
            .withDatabaseName("test")
            .withUsername("test")
            .withPassword("test");

    // ...
}

위 예제에서는 PostgreSQL을 사용하며, 테스트용 데이터베이스의 이름은 “test”이고, 사용자 이름과 비밀번호는 모두 “test”로 설정되어 있습니다.

데이터베이스 초기화 및 마이그레이션 테스트

JUnit 테스트 클래스에서 데이터베이스 초기화 및 마이그레이션 테스트를 작성할 수 있습니다. 예를 들어, 스키마 생성 및 마이그레이션 스크립트를 테스트하는 메소드는 다음과 같이 작성할 수 있습니다.

import org.junit.Test;

public class DatabaseTest {
    // ...

    @Test
    public void testSchemaCreation() {
        // 스키마 생성 테스트 코드 작성
    }

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

    // ...
}

각 메소드에서는 테스트할 데이터베이스의 초기 상태를 설정하고, 초기화 및 마이그레이션 작업을 수행한 뒤에는 원하는 결과와 일치하는지 검증해야 합니다. 예를 들어, 특정 테이블이 생성되었는지 여부를 확인하는 코드를 작성할 수 있습니다.

마무리

JUnit을 사용하여 데이터베이스 초기화 및 마이그레이션을 테스트하는 방법에 대해 알아보았습니다. 이를 통해 애플리케이션의 데이터베이스 관련 기능을 안정적으로 테스트할 수 있습니다. 자세한 내용은 JUnit 및 관련 라이브러리의 문서를 참고하시기 바랍니다.

참고 자료