복붙노트

[REDIS] 봄 부팅을위한 레디 스를 내장

REDIS

봄 부팅을위한 레디 스를 내장

내 컴퓨터에서 내 로컬 레디 스 서버의 도움으로 봄 부팅 내 통합 테스트 케이스를 실행합니다.

하지만 난 H2 메모리 데이터베이스처럼, 모든 서버에 의존하지 않고 어떤 환경에서 실행할 수있는 임베디드 레디 스 서버를 원한다. 어떻게하니?

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
@SpringApplicationConfiguration(classes = Application.class) 
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
public class MasterIntegrationTest {

}

해결법

  1. ==============================

    1.당신은 https://github.com/kstyrc/embedded-redis 같은 임베디드 레디 스를 사용할 수 있습니다

    당신은 https://github.com/kstyrc/embedded-redis 같은 임베디드 레디 스를 사용할 수 있습니다

  2. ==============================

    2.당신은 (이 kstyrc / 임베디드 레디 스의 후계자) 메이븐 (-test) -dependency로 / 임베디드 레디 스를 ozimov 사용할 수 있습니다.

    당신은 (이 kstyrc / 임베디드 레디 스의 후계자) 메이븐 (-test) -dependency로 / 임베디드 레디 스를 ozimov 사용할 수 있습니다.

  3. ==============================

    3.또 다른 깔끔한 방법은 도커 컨테이너의 수 및 레디 스도 예외는 없다는 것을 모든 유형의 응용 프로그램을 실행할 수있는 testcontainers 라이브러리를 사용하는 것입니다. 내가 가장 좋아하는 것은 가볍게 봄 테스트 에코 시스템과 결합되어 있다는 점이다.

    또 다른 깔끔한 방법은 도커 컨테이너의 수 및 레디 스도 예외는 없다는 것을 모든 유형의 응용 프로그램을 실행할 수있는 testcontainers 라이브러리를 사용하는 것입니다. 내가 가장 좋아하는 것은 가볍게 봄 테스트 에코 시스템과 결합되어 있다는 점이다.

    메이븐의 의존성 :

    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>testcontainers</artifactId>
        <version>${testcontainers.version}</version>
    </dependency>
    

    간단한 통합 테스트 :

    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = {"management.port=0"})
    @ContextConfiguration(initializers = AbstractIntegrationTest.Initializer.class)
    @DirtiesContext
    public abstract class AbstractIntegrationTest {
    
        private static int REDIS_PORT = 6379;
    
        @ClassRule
        public static GenericContainer redis = new GenericContainer("redis:3.0.6").withExposedPorts(REDIS_PORT);
    
        public static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
            @Override
            public void initialize(ConfigurableApplicationContext ctx) {
                // Spring Boot 1.5.x
                TestPropertySourceUtils.addInlinedPropertiesToEnvironment(ctx,
                    "spring.redis.host=" + redis.getContainerIpAddress(),
                    "spring.redis.port=" + redis.getMappedPort(REDIS_PORT));
    
                // Spring Boot 2.x.
                TestPropertyValues.of(
                    "spring.redis.host:" + redis.getContainerIpAddress(),
                    "spring.redis.port:" + redis.getMappedPort(REDIS_PORT))
                    .applyTo(ctx);
            }
        }
    }
    
  4. ==============================

    4.https://github.com/caryyu/spring-embedded-redis-server, 완전히 봄과 봄 부팅과 통합 :이 저장소를 볼 수 있습니다

    https://github.com/caryyu/spring-embedded-redis-server, 완전히 봄과 봄 부팅과 통합 :이 저장소를 볼 수 있습니다

    <dependency>
    <groupId>com.github.caryyu</groupId>
    <artifactId>spring-embedded-redis-server</artifactId>
    <version>1.1</version>
    </dependency>
    
    @Bean
    public RedisServerConfiguration redisServerConfiguration() {
    return new RedisServerConfiguration();
    }
    
    spring:
        redis:
            port: 6379
            embedded: true
    
  5. from https://stackoverflow.com/questions/32524194/embedded-redis-for-spring-boot by cc-by-sa and MIT license