로컬에 Redis를 띄워서 테스트 코드를 검증할 수도 있지만, 테스트 코드는 동일한 환경에서 실행되어야 한다고 생각하기 때문에 다른 방법을 찾아봤다.

Embedded Redis

TestContainer

Untitled

속도를 감안하더라도 격리된 환경에서 테스트를 할 수 있기 때문에 TestContainer를 선택했다.

build.gradle

testImplementation "org.testcontainers:testcontainers:1.19.0"
testImplementation "org.testcontainers:junit-jupiter:1.19.0"

RedisConfig 파일 생성

main 경로에 생성한다.

@EnableCaching
@Configuration
public class RedisConfig {

    @Value("${spring.data.redis.host}")
    private String host;

    @Value("${spring.data.redis.port}")
    private int port;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory(host, port);
    }

    @Bean
    public RedisTemplate<String, Long> redisTemplate() { // 인자에 따라 설정 다르게 하기
        RedisTemplate<String, Long> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(
            new GenericToStringSerializer<>(Long.class)); // Long 값을 다루므로 설정 변경
        redisTemplate.setConnectionFactory(redisConnectionFactory());
        return redisTemplate;
    }
}