이전에 구축한 redis에 대해 잘 작동되는지 test로 확인하고 싶었다. 찾아보니 방법은 embedded redis를 사용하는 것과 test container를 사용하는 것 2가지가 있었다. 전자의 방법은 업데이트가 오래돼서 후자 방법을 사용하기로 했다..
test container를 사용하게 되면 테스트 실행 시마다 도커 컨테이너가 실행되고 자동 종료된다.
RedisTestContainers
public class RedisTestContainers implements BeforeAllCallback {
private static final String REDIS_DOCKER_IMAGE = "redis:5.0.3-alpine";
private GenericContainer REDIS_CONTAINER;
@Override
public void beforeAll(ExtensionContext context) throws Exception {
REDIS_CONTAINER = new GenericContainer<>(DockerImageName.parse(REDIS_DOCKER_IMAGE))
.withExposedPorts(6379)
.withReuse(true);
REDIS_CONTAINER.start();
System.setProperty("spring.redis.host", REDIS_CONTAINER.getHost());
System.setProperty("spring.redis.port", String.valueOf(REDIS_CONTAINER.getMappedPort(6379)));
}
}
RedisUtilTest
@ExtendWith(RedisTestContainers.class)
@SpringBootTest
public class RedisUtilTest {
@Autowired
private RedisUtil redisUtil;
@Test
void getData() {
//given
String refreshToken = "asdf.asdf.asdf";
String key = "refreshToken:1";
//when
redisUtil.setData(key,refreshToken, 100000);
//then
assertThat(redisUtil.getData(key)).isEqualTo(refreshToken);
}
}