JAVA · 테스트
Testcontainers
Docker 컨테이너로 실제 인프라 통합 테스트를 수행합니다.
테스트고급TestcontainersDocker통합테스트PostgreSQL
핵심 설명
Docker 컨테이너로 실제 인프라 통합 테스트를 수행합니다.
Java code
// Testcontainers 의존성: org.testcontainers:testcontainers:1.19+
// import org.testcontainers.containers.PostgreSQLContainer;
// import org.testcontainers.junit.jupiter.*;
// @Testcontainers
// class DatabaseIntegrationTest {
// @Container
// static PostgreSQLContainer<?> postgres =
// new PostgreSQLContainer<>("postgres:16-alpine")
// .withDatabaseName("testdb")
// .withUsername("test")
// .withPassword("test");
//
// @Test
// void shouldConnectToDatabase() throws Exception {
// String url = postgres.getJdbcUrl();
// try (Connection conn = DriverManager.getConnection(
// url, "test", "test")) {
// assertFalse(conn.isClosed());
//
// Statement stmt = conn.createStatement();
// stmt.execute("CREATE TABLE test (id INT, name VARCHAR(50))");
// stmt.execute("INSERT INTO test VALUES (1, '홍길동')");
//
// ResultSet rs = stmt.executeQuery("SELECT * FROM test");
// assertTrue(rs.next());
// assertEquals("홍길동", rs.getString("name"));
// }
// }
// }
class Main {
public static void main(String[] args) {
System.out.println("Testcontainers 지원 컨테이너:");
System.out.println("- PostgreSQL, MySQL, MongoDB, Redis");
System.out.println("- Kafka, RabbitMQ, Elasticsearch");
System.out.println("- 모든 Docker 이미지 사용 가능");
}
}학습 팁
@Container와 static을 함께 쓰면 테스트 클래스당 한 번만 컨테이너를 시작합니다. 테스트 시간을 크게 줄일 수 있습니다.
주의할 점
Testcontainers는 Docker가 실행 중이어야 합니다. CI/CD에서 Docker-in-Docker(DinD) 설정을 확인하세요.
자주 묻는 질문
Testcontainers란 무엇인가요?
Docker 컨테이너로 실제 인프라 통합 테스트를 수행합니다.
Testcontainers 학습 시 주의할 점은 무엇인가요?
Testcontainers는 Docker가 실행 중이어야 합니다. CI/CD에서 Docker-in-Docker(DinD) 설정을 확인하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.