반응형

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

 

반응형