[java] TestContainers로 Postgres 컨테이너를 시작하는 방법
TestContainers는 Java 기반의 통합 테스트 프레임워크로, 컨테이너화된 환경에서 테스트를 수행할 수 있게 해줍니다. 이번 글에서는 TestContainers를 사용하여 Postgres 컨테이너를 시작하는 방법에 대해 알아보겠습니다.
1. 의존성 추가
먼저, pom.xml
파일에 TestContainers 및 Postgres JDBC 드라이버의 의존성을 추가해야 합니다.
<dependencies>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.15.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>1.15.3</version>
<scope>test</scope>
</dependency>
<!-- additional dependencies -->
</dependencies>
2. 테스트 작성
이제 테스트 코드를 작성해보겠습니다. 다음은 TestContainers를 사용하여 Postgres 컨테이너를 시작하는 간단한 테스트입니다.
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.PostgreSQLContainer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import static org.junit.jupiter.api.Assertions.assertNotNull;
public class PostgresContainerTest {
@Test
public void testPostgresContainer() throws SQLException {
try (PostgreSQLContainer<?> container = new PostgreSQLContainer<>("postgres:13")) {
container.start();
String jdbcUrl = container.getJdbcUrl();
String username = container.getUsername();
String password = container.getPassword();
try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {
assertNotNull(connection);
}
}
}
}
위의 테스트 코드에서 PostgreSQLContainer
클래스를 사용하여 Postgres 컨테이너를 생성하고 시작합니다. 그런 다음, 컨테이너의 JDBC URL, 사용자 이름 및 비밀번호를 가져와서 실제로 연결을 수행합니다. 연결이 성공하는지 확인하기 위해 assertNotNull
메서드를 사용합니다.
3. 테스트 실행
테스트를 실행하려면 IDE 또는 빌드 도구를 사용할 수 있습니다. 위의 테스트 코드를 실행하면 TestContainers가 Postgres 컨테이너를 자동으로 다운로드하고 시작한 후에 테스트가 실행됩니다. 테스트가 완료된 후에는 컨테이너가 자동으로 종료됩니다.
결론
TestContainers를 사용하면 Postgres 컨테이너를 간단하게 시작할 수 있습니다. 이를 통해 테스트 환경을 컨테이너화하여 격리된 테스트를 실행할 수 있습니다. 자세한 내용은 TestContainers 공식 문서를 참조하시기 바랍니다.