2015-09-11 14 views
14

Ich starte meine Integration Testfälle mit Spring Boot mit Hilfe meiner lokalen Redis-Server auf meinem Rechner, aber ich möchte einen eingebetteten Redis-Server, der nicht abhängig von irgendeinem Server ist und auf jeder Umgebung wie laufen kann h2 in der Speicherdatenbank ..?Embedded Redis für Spring Boot

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

} 
+0

haben Sie überprüft https://github.com/kstyrc/embedded-redis –

+1

Ja, ich habe überprüft, aber ich bin ein wenig verwirrt ich meine ich will nur wissen, muss ich @Bean RedisServer getserver() {} zu erstellen injizieren? –

Antwort

27

können Sie eine eingebettete Redis verwenden wie https://github.com/kstyrc/embedded-redis

  1. Fügen Sie die Abhängigkeit zu Ihrem pom.xml
  2. Passen Sie die Eigenschaften für Ihre Integrationstest auf Ihre Embedded redis, zum Beispiel Punkt:

    spring: 
        redis: 
        host: localhost 
        port: 6379 
    
  3. Instanziieren Sie den eingebetteten Redis-Server in einer Komponente, die in definiert ist nur Ihre Tests:

    @Component 
    public class EmbededRedis { 
    
        @Value("${spring.redis.port}") 
        private int redisPort; 
    
        private RedisServer redisServer; 
    
        @PostConstruct 
        public void startRedis() throws IOException { 
         redisServer = new RedisServer(redisPort); 
         redisServer.start(); 
        } 
    
        @PreDestroy 
        public void stopRedis() { 
         redisServer.stop(); 
        } 
    } 
    
+0

Gibt es eine Möglichkeit, ein Kennwort für den eingebetteten Server festzulegen? – Renjith

+0

wahrscheinlich, schauen Sie sich das Dokument des Github-Projekts an, es scheint ziemlich konfigurierbar zu sein –

+4

Das Projekt scheint nicht mehr aktiv gepflegt zu werden. Letzte Veröffentlichung war vor fast zwei Jahren. –

5

Sie ozimov/embedded-redis als Maven (-Test) -Abhängigkeit verwenden können (dies ist der Nachfolger von kstyrc/embedded-redis).

  1. die Abhängigkeit zu Ihrem pom.xml hinzufügen

    <dependencies> 
        ... 
        <dependency> 
        <groupId>it.ozimov</groupId> 
        <artifactId>embedded-redis</artifactId> 
        <version>0.7.1</version> 
        <scope>test</scope> 
        </dependency> 
    
  2. Passen Sie Ihre Anwendungseigenschaften für Ihre Integrationstest

    spring.redis.host=localhost 
    spring.redis.port=6379 
    
  3. Verwenden des integrierten redis Server in einem test configuration

    @TestConfiguration 
    public static class EmbededRedisTestConfiguration { 
    
        private final redis.embedded.RedisServer redisServer; 
    
        public EmbededRedisTestConfiguration(@Value("${spring.redis.port}") final int redisPort) throws IOException { 
        this.redisServer = new redis.embedded.RedisServer(redisPort); 
        } 
    
        @PostConstruct 
        public void startRedis() { 
        this.redisServer.start(); 
        } 
    
        @PreDestroy 
        public void stopRedis() { 
        this.redisServer.stop(); 
        } 
    } 
    
-1

können Sie dieses Repository sehen: https://github.com/caryyu/spring-embedded-redis-server, voll integriert mit Spring and Spring Stiefel

Maven Abhängigkeit

<dependency> 
<groupId>com.github.caryyu</groupId> 
<artifactId>spring-embedded-redis-server</artifactId> 
<version>1.0</version> 
</dependency> 

Federverschluß Anmerkung

@Bean 
public RedisServerConfiguration redisServerConfiguration() { 
return new RedisServerConfiguration(); 
} 

Nutzung von application.yml

global: 
    redis: 
     port: 6379 
     embedded: true 
+0

Repository-Dokumentation ist in Chinesisch, wenn Sie eine englische Version finden Sie den Link bitte. –

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/19027836) – ishmaelMakitla

Verwandte Themen