Spring Boot 테스트 에 포 함 된 Redis 서버 사용 튜 토리 얼

5314 단어 RedisSpringBoot
1.개술Spring Data RedisRedis 인 스 턴 스 와 통합 하 는 간단 한 방법 을 제공 했다.
그러나 어떤 경우 에는 실제 서버 를 이용 해 개발 과 테스트 환경 을 만 드 는 것 보다 내장 형 서버 를 사용 하 는 것 이 편리 하 다.
따라서 삽입 식 Redis 서버 를 어떻게 설정 하고 사용 하 는 지 배 울 것 입 니 다.
의존
우선 필요 한 의존 항목 을 추가 합 니 다.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
  <groupId>it.ozimov</groupId>
  <artifactId>embedded-redis</artifactId>
  <version>0.7.2</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>
이것spring-boot-starter-test은 우리 가 통합 테스트 를 실행 해 야 하 는 각종 의존 을 포함한다.
그 밖 에embedded-redis우리 가 사용 할 내장 서버 를 포함 합 니 다.
3.설정
의존 항목 을 추가 하면 Redis 서버 와 프로그램 간 의 연결 설정 을 정의 해 야 합 니 다.
우선 클래스 를 만들어 서 속성 을 저장 합 니 다:

@Configuration
public class RedisProperties {
    private int redisPort;
    private String redisHost;

    public RedisProperties(
      @Value("${spring.redis.port}") int redisPort, 
      @Value("${spring.redis.host}") String redisHost) {
        this.redisPort = redisPort;
        this.redisHost = redisHost;
    }

    // getters
}
다음 에 연결 을 정의 하고 속성 을 사용 할 설정 클래스 를 만들어 야 합 니 다.

@Configuration
@EnableRedisRepositories
public class RedisConfiguration {

    @Bean
    public LettuceConnectionFactory redisConnectionFactory(
      RedisProperties redisProperties) {
        return new LettuceConnectionFactory(
          redisProperties.getRedisHost(), 
          redisProperties.getRedisPort());
    }

    @Bean
    public RedisTemplate<?, ?> redisTemplate(LettuceConnectionFactory connectionFactory) {
        RedisTemplate<byte[], byte[]> template = new RedisTemplate<>();
        template.setConnectionFactory(connectionFactory);
        return template;
    }
}
설정 이 매우 간단 합 니 다.이렇게 하면 우리 의 내장 서버 는 다른 포트 에서 실행 할 수 있다.
4.내장 형 Redis 서버
현재,우 리 는 끼 워 넣 는 서버 를 설정 하고 테스트 에서 사용 할 것 입 니 다.
우선,테스트 자원 디 렉 터 리(src/test/resources)에 application.properties 파일 을 만 듭 니 다.

spring.redis.host=localhost
spring.redis.port=6370
다음 에@TestConfiguration 주해 의 설정 클래스 를 만 들 것 입 니 다.

@TestConfiguration
public class TestRedisConfiguration {

    private RedisServer redisServer;

    public TestRedisConfiguration(RedisProperties redisProperties) {
        this.redisServer = new RedisServer(redisProperties.getRedisPort());
    }

    @PostConstruct
    public void postConstruct() {
        redisServer.start();
    }

    @PreDestroy
    public void preDestroy() {
        redisServer.stop();
    }
}
context 컨 텍스트 가 시작 되면 서버 가 시 작 됩 니 다.그것 은 우리 가 속성 에서 정의 한 포트 에 따라 우리 의 기계 에서 운행 한다.그것 이 있 으 면 우 리 는 이제 실제 Redis 서버 를 멈 추 지 않 고 테스트 를 실행 할 수 있 습 니 다.
이상 적 인 상황 에서,우 리 는 랜 덤 으로 사용 할 수 있 는 포트 에서 그것 을 시작 하 기 를 희망 하지만,끼 워 넣 는 Redis 는 아직 이 기능 을 갖 추고 있 지 않다.우리 가 지금 할 수 있 는 일 은 ServerSocket API 를 통 해 무 작위 포트 를 가 져 오 는 것 이다.
이 밖 에 상하 문 이 멈 추 면 서버 도 따라서 멈춘다.
서버 도 실행 가능 한 파일 로 제공 할 수 있 습 니 다.

this.redisServer = new RedisServer("/path/redis", redisProperties.getRedisPort());
또한 실행 가능 한 파일 은 다른 운영 체제 에 따라 정의 할 수 있 습 니 다.

RedisExecProvider customProvider = RedisExecProvider.defaultProvider()
.override(OS.UNIX, "/path/unix/redis")
.override(OS.Windows, Architecture.x86_64, "/path/windows/redis")
.override(OS.MAC_OS_X, Architecture.x86_64, "/path/macosx/redis");

this.redisServer = new RedisServer(customProvider, redisProperties.getRedisPort());
마지막 으로 TestRedisConfiguration 류 를 사용 하 는 테스트 를 만 듭 시다.

@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestRedisConfiguration.class)
public class UserRepositoryIntegrationTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void shouldSaveUser_toRedis() {
        UUID id = UUID.randomUUID();
        User user = new User(id, "name");

        User saved = userRepository.save(user);

        assertNotNull(saved);
    }
}
이렇게 하면 사용자 가 우리 의 내장 형 Redis 서버 에 저장 할 수 있 습 니 다.
그 밖 에 우 리 는TestRedisConfiguration을 수 동 으로SpringBootTest에 추가 해 야 한다.앞서 말 했 듯 이 서버 는 테스트 전에 시작 하고 테스트 후에 중단 합 니 다.
5.결론
임 베 디 드 레 디 스 서버 는 테스트 환경 에서 실제 서버 를 교체 하 는 완벽 한 도구 입 니 다.우 리 는 그것 을 어떻게 설정 하고 테스트 에서 어떻게 사용 하 는 지 이미 보 았 다.
여기에 포 함 된 레 디 스 서버 가 Spring Boot 테스트 에서 사용 하 는 것 에 관 한 글 을 소개 합 니 다.더 많은 레 디 스 스프링 부 트 사용 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기