테스트 환경을 구축하는 데 도움이 되는 도구로 TestContainers가 있습니다. 이는 컨테이너화된 환경에서 테스트를 수행할 수 있도록 지원해줍니다. 지금은 JUnit 5와 TestContainers를 함께 사용하는 방법을 알아보려고 합니다.
의존성 추가
먼저 프로젝트에 필요한 의존성을 추가해야 합니다. 아래는 Gradle을 사용하는 경우의 예시입니다.
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
testImplementation 'org.testcontainers:testcontainers:1.15.3'
testImplementation 'org.testcontainers:junit-jupiter:1.15.3'
Maven을 사용하는 경우에는 다음과 같이 의존성을 추가할 수 있습니다.
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.15.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>1.15.3</version>
<scope>test</scope>
</dependency>
컨테이너를 사용한 테스트 작성하기
TestContainers를 사용하여 컨테이너를 시작하고 테스트를 수행할 수 있습니다. 아래는 PostgreSQL 컨테이너를 사용한 예시입니다.
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
class MyTest {
@Container
private static final PostgreSQLContainer<?> postgresContainer = new PostgreSQLContainer<>();
@Test
void testSomething() {
// 컨테이너에 대한 설정을 이용하여 테스트 수행
String jdbcUrl = postgresContainer.getJdbcUrl();
// ...
}
}
위의 코드에서 @Testcontainers
어노테이션은 JUnit 5 테스트 클래스에 대한 TestContainers 지원을 활성화시킵니다. @Container
어노테이션은 컨테이너 인스턴스를 필드에 주입합니다. 이후에 해당 필드를 사용하여 컨테이너에 대한 설정을 가져올 수 있습니다.
테스트 수행하기
이제 TestContainers가 연동된 JUnit 테스트를 실행해보세요. IntelliJ IDEA 같은 IDE에서는 테스트 클래스나 테스트 메서드를 우클릭한 후 “Run”을 선택하여 실행할 수 있습니다. 또는 Gradle이나 Maven을 사용하여 ./gradlew test
또는 mvn test
명령을 실행할 수도 있습니다.
테스트가 실행되면 TestContainers는 컨테이너를 시작하고 테스트를 수행합니다. 이렇게 테스트를 실행하면 실제로 데이터베이스 컨테이너가 실행되고 테스트에서 사용할 수 있게 됩니다. 테스트가 완료된 후 컨테이너는 자동으로 종료됩니다.
결론
TestContainers는 테스트 환경을 구축할 때 매우 유용한 도구입니다. JUnit 5와 통합하여 사용하면 컨테이너화된 환경에서 테스트를 보다 쉽게 수행할 수 있습니다. 이 글을 통해 TestContainers를 JUnit 5와 함께 사용하는 방법을 알아보았습니다.