[java] TestContainers로 MySQL 컨테이너를 시작하는 방법

이번 글에서는 TestContainers를 사용하여 Java 애플리케이션에서 MySQL 컨테이너를 시작하는 방법에 대해 알아보겠습니다.

TestContainers는 테스트 환경에서 독립적인 컨테이너를 실행하고 관리하는 라이브러리입니다. Java 코드 내에서 컨테이너를 시작하고 테스트를 수행하는 것을 도와줍니다.

1. 의존성 추가하기

먼저, Maven 또는 Gradle 프로젝트에 TestContainers 의존성을 추가해야 합니다.

Maven을 사용하는 경우, pom.xml 파일에 다음과 같은 의존성을 추가합니다:

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

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같은 의존성을 추가합니다:

testImplementation 'org.testcontainers:testcontainers:1.15.0'

의존성을 추가한 후 프로젝트를 업데이트하십시오.

2. MySQL 컨테이너 시작하기

이제 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 MySQLContainerTest {

    @Container
    private static final MySQLContainer mysqlContainer = new MySQLContainer()
            .withDatabaseName("test")
            .withUsername("test")
            .withPassword("test");

    @Test
    public void mySQLContainerTest() {
        // MySQL 컨테이너에 대한 테스트 코드를 작성합니다.
        // ...
    }
}

위의 코드에서는 MySQLContainer 클래스를 사용하여 MySQL 컨테이너를 생성합니다. withDatabaseName, withUsername, withPassword 메서드를 사용하여 컨테이너의 데이터베이스 이름, 사용자 이름 및 비밀번호를 설정할 수 있습니다.

@Container 어노테이션을 사용하여 컨테이너를 필드로 선언하고 @Test 어노테이션을 사용하여 테스트 메서드를 작성합니다. 이렇게 하면 각 테스트 메서드마다 독립적인 MySQL 컨테이너가 생성됩니다.

3. MySQL 컨테이너 사용하기

이제 MySQL 컨테이너를 사용하여 Java 애플리케이션의 데이터베이스 연결을 설정할 수 있습니다. 아래 예시 코드를 참고하세요.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MyApp {

    public static void main(String[] args) throws SQLException {
        try (Connection connection = DriverManager.getConnection(
                mysqlContainer.getJdbcUrl(),
                mysqlContainer.getUsername(),
                mysqlContainer.getPassword())) {

            // 컨테이너로부터 생성한 연결을 사용하여 데이터베이스 작업을 수행합니다.
            // ...
        }
    }
}

위 예시 코드에서는 mysqlContainer.getJdbcUrl(), mysqlContainer.getUsername(), mysqlContainer.getPassword()를 사용하여 MySQL 컨테이너의 JDBC URL, 사용자 이름 및 비밀번호를 가져와 데이터베이스 연결을 설정합니다.

마무리

이제 TestContainers를 사용하여 Java 애플리케이션에서 MySQL 컨테이너를 시작하는 방법에 대해 알아보았습니다. TestContainers를 통해 애플리케이션의 테스트 환경을 보다 쉽게 구성할 수 있고, 테스트 데이터베이스를 간편하게 관리할 수 있습니다. 자세한 내용은 TestContainers 공식 문서를 참조하십시오.