Chill한 루피를 데려왔습니다.
이유는 없고, 요즘 유행인 것 같길래 우선 넣어봤습니다^^!
평소보다 이미지가 길어서 깔끔하지 않은 모양새로 글을 시작하게 됬지만, Chill한 루피와 함께라면 이 정도는 Chill하게 넘어갈 수 있지 않을까,, 생각합니다,,
오늘은 간단하게 테스트 코드 작성 시, Embedded Redis를 사용하는 방법을 정리해 보고자 합니다.
1. Spring Boot + Redis 환경에서 테스트 코드 작성 시 Embedded Redis를 사용하는 이유
실제 Redis 서버에 의존하지 않고 테스트를 실행할 수 있기 때문입니다. 즉, Redis를 설치하지 않아도 테스트 가능합니다.
Embedded Redis는 테스트가 끝나면 자동으로 종료되므로, 테스트 데이터 정리를 신경 쓸 필요 없습니다.
클라이언트-서버 통신이 필요없어서 네트워크 I/O 오버헤드가 발생하지 않으므로 실제 Redis 서버보다 좀 더 빠릅니다.
* 네트워크 I/O 오버헤드: 데이터를 전송할 때 발생하는 추가적인 시간/비용/리소스 소비
2. Dependancy 추가
build.gradle
dependencies {
testImplementation 'com.github.codemonstur:embedded-redis:1.4.3' // test 전용 embedded redis 추가
}
3. Configuration 파일 작성
EmbeddedRedis.java
@TestConfiguration
public class EmbeddedRedis {
private final RedisServer redisServer;
public EmbeddedRedis() throws IOException {
this.redisServer = new RedisServer(63790);
}
// 1. Spring이 EmbeddedRedis 객체를 생성
@PostConstruct
public void start() throws IOException {
// 2️. EmbeddedRedis 생성 후 → start() 호출 (Redis 서버 시작)
this.redisServer.start();
}
// 3. 테스트 실행
@PreDestroy
public void stop() throws IOException {
// 4. EmbeddedRedis 소멸 전 → stop() 호출 (Redis 서버 종료)
this.redisServer.stop();
}
}
🚨 Local에서 Redis를 기본 포트(6379)로 실행하고 있어서 Embedded Redis는 다른 포트를 지정해주었습니다.
4. 환경 설정 파일 추가
application.yml
spring:
data:
redis:
host: 127.0.0.1
port: 6379
---
spring:
config:
activate:
on-profile: test
data:
redis:
host: 127.0.0.1
port: 63790
test 환경에서는 redis의 port가 다르므로 환경 설정 파일에 해당 내용을 추가해줍니다.
이를 통해 알 수 있는 건 환경마다 환경 설정을 다르게 할 수 있다는 사실입니다🤗!
5. 테스트 코드 작성
Test.java
@SpringBootTest
@Import(EmbeddedRedis.class)
@ActiveProfiles("test")
class UserQueueServiceTest {}
작성한 Redis Configuration을 Import 해주고, Profile을 적용하기 위해 ActiveProfiles도 추가해줍니다.
📑
참고 자료
Chat GPT
https://fastcampus.co.kr/dev_online_traffic_data
9개 프로젝트로 경험하는 대용량 트래픽 & 데이터 처리 완벽 마스터하기 | 패스트캠퍼스
실무에서 자주 일어나는 대용량 트래픽 & 데이터 처리 업무를 한번에 마스터할 수 있도록 모든 것을 담았습니다. 대기업 & 빅테크 현업 강사진 8인과 함께 하는 고퀄리티 현업 대비형 강의! 타사
fastcampus.co.kr
'MinimiProject > 아이돌 티켓팅 접속자 대기열 시스템' 카테고리의 다른 글
[대기열 시스템] Webflux와 Checked/Unchecked Exception (0) | 2025.02.23 |
---|---|
[대기열 시스템] Task Execution and Scheduling (1) | 2025.02.16 |
[대기열 시스템] Custom Exception (0) | 2025.02.13 |
[대기열 시스템] Spring WebFlux와 BlockHound (0) | 2025.02.11 |
[대기열 시스템] NullPointerException: Mocking (0) | 2025.02.10 |