[java] TestContainers를 사용하여 멀티모듈 애플리케이션 테스트하기

TestContainers는 도커를 사용하여 애플리케이션을 테스트하는 데 사용되는 테스트 프레임워크입니다. 이 기술을 사용하면 간단하게 멀티모듈 애플리케이션을 테스트할 수 있습니다. 이 글에서는 TestContainers를 사용하여 멀티모듈 애플리케이션을 테스트하는 방법에 대해 알아보겠습니다.

1. TestContainers 라이브러리 추가하기

우선, 프로젝트의 pom.xml 파일에 TestContainers 라이브러리를 추가해야 합니다. 아래의 의존성을 pom.xml 파일에 추가해 주세요.

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

2. 도커 컨테이너 설정하기

TestContainers를 사용하려면 도커 컨테이너를 설정해야 합니다. 멀티모듈 애플리케이션을 테스트하는 경우, 여러 개의 도커 컨테이너를 설정할 수 있습니다. 예를 들어, 데이터베이스와 웹 서비스를 테스트해야 할 경우, 각각의 도커 컨테이너를 설정해야 합니다.

아래 코드는 데이터베이스 도커 컨테이너를 설정하는 예시입니다.

@Container
public static PostgreSQLContainer<?> postgreSQLContainer = new PostgreSQLContainer<>("postgres:latest");

@BeforeAll
public static void setUp() {
    postgreSQLContainer.start();
    // 데이터베이스 설정 등을 수행할 수 있습니다.
}

@AfterAll
public static void tearDown() {
    postgreSQLContainer.stop();
}

위 코드에서 @Container 어노테이션으로 도커 컨테이너를 정의하고 @BeforeAll 어노테이션과 @AfterAll 어노테이션으로 컨테이너를 시작하고 종료할 때 필요한 작업을 수행합니다.

3. 도커 컨테이너 사용하기

도커 컨테이너를 설정하고 나면 테스트에서 해당 도커 컨테이너를 사용할 수 있습니다. 아래는 도커 컨테이너를 사용하는 간단한 테스트 예제입니다.

@Test
void testContainer() {
    // 도커 컨테이너를 사용하여 테스트 코드를 작성합니다.
    String jdbcUrl = postgreSQLContainer.getJdbcUrl();
    // 데이터베이스에 접근하는 코드 등을 작성합니다.
    // ...
    // 테스트 검증 코드를 작성합니다.
    // ...
}

위 코드에서는 postgreSQLContainer 객체를 사용하여 데이터베이스로의 접속 URL을 얻고, 이를 바탕으로 데이터베이스에 접근하는 코드를 작성합니다. 테스트 검증 코드에서는 예상 결과와 실제 결과를 비교하여 테스트의 성공 여부를 확인할 수 있습니다.

4. 실행 및 결과 확인하기

테스트를 실행하려면 해당 테스트를 포함하는 테스트 클래스를 실행하면 됩니다. 일반적으로 IDE에서는 테스트를 실행하는 기능을 제공하므로 IDE에서 해당 테스트 클래스를 선택하여 실행하면 됩니다.

테스트 결과는 성공 또는 실패로 표시되며, 실패한 경우 어떤 부분이 문제인지에 대한 상세한 정보를 제공합니다.

결론

TestContainers를 사용하면 도커를 통해 멀티모듈 애플리케이션을 테스트할 수 있습니다. 이를 통해 애플리케이션의 다양한 컴포넌트를 효과적으로 테스트할 수 있으며, 테스트 환경을 실제 운영 환경과 동일하게 구성할 수 있습니다. 따라서 TestContainers는 애플리케이션 개발과 테스트를 보다 더 효율적이고 안정적으로 진행할 수 있게 해 줍니다.

참고 자료