Spring Boot 테스트 에 포 함 된 Redis 서버 사용 튜 토리 얼
Spring Data Redis
Redis 인 스 턴 스 와 통합 하 는 간단 한 방법 을 제공 했다.그러나 어떤 경우 에는 실제 서버 를 이용 해 개발 과 테스트 환경 을 만 드 는 것 보다 내장 형 서버 를 사용 하 는 것 이 편리 하 다.
따라서 삽입 식 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 테스트 에서 사용 하 는 것 에 관 한 글 을 소개 합 니 다.더 많은 레 디 스 스프링 부 트 사용 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
그래프 구조를 무상으로 취급할 수 없는 것은 싫기 때문에, redisgraph를 WSL2에 극치고 설치해 보았습니다.제목은 만우절이므로. 그렇다, 역시, 앞으로는 그래프 구조 데이터베이스라고 생각했다. 생각한 것은 몇 년 전인가. 전부터 Neo4j는 시험하고 있지만, 영업 분들로부터 상용 라이센스가 높다고 가르쳐 주었으므로, 전전...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.