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

TestContainers는 테스트에 사용되는 도커 컨테이너를 관리하기 위한 Java 라이브러리입니다. 이를 사용하여 레디스 컨테이너를 시작하고 테스트를 수행하는 방법을 알아보겠습니다.

1. Maven 종속성 추가하기

프로젝트의 pom.xml 파일에 다음 종속성을 추가합니다:

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

2. 테스트 코드 작성하기

Redis를 사용하는 테스트 코드를 작성해봅시다. 다음은 테스트 코드의 예입니다:

import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import redis.clients.jedis.Jedis;

@Testcontainers
public class RedisTest {
    
    @Container
    private static final GenericContainer redisContainer =
            new GenericContainer("redis:6.2.0")
                    .withExposedPorts(6379);
    
    @Test
    void testRedisConnection() {
        // Redis 컨테이너의 IP와 포트를 가져옵니다.
        String containerIp = redisContainer.getContainerIpAddress();
        int containerPort = redisContainer.getMappedPort(6379);
        
        // Jedis를 사용하여 Redis에 연결합니다.
        Jedis jedis = new Jedis(containerIp, containerPort);
        
        // Redis 명령어를 실행하고 결과를 확인합니다.
        String pong = jedis.ping();
        assert pong.equals("PONG");
        
        // 연결을 닫습니다.
        jedis.close();
    }
}

위의 테스트 코드에서는 Redis 컨테이너를 시작하고, 컨테이너의 IP와 포트를 얻어와 Jedis를 사용하여 Redis 서버에 연결합니다. 그리고 PING 명령어를 실행하여 연결이 성공적인지 확인합니다.

3. 테스트 실행하기

이제 위의 테스트 코드를 실행해봅시다. Redis 컨테이너가 시작되고 테스트가 실행될 것입니다.

테스트를 실행하려면 IDE에서 테스트 클래스를 실행하거나, Maven을 사용하여 테스트를 실행할 수 있습니다:

mvn test

테스트가 성공하면 Redis 컨테이너가 성공적으로 시작되고, 테스트가 통과된 것을 의미합니다.

결론

TestContainers를 사용하면 테스트에 필요한 도커 컨테이너를 쉽게 관리할 수 있습니다. 이를 활용하여 Redis 컨테이너를 시작하고 테스트하는 방법을 알아보았습니다. TestContainers는 다양한 다른 컨테이너를 시작하는 것도 가능하므로 다른 테스트 케이스에도 유용하게 사용될 수 있습니다.