Zabudovaný server Redis s testom jarného spustenia

1. Prehľad

Spring Data Redis poskytuje jednoduchý spôsob integrácie s inštanciami Redis.

V niektorých prípadoch však je pohodlnejšie používať zabudovaný server ako vytvárať prostredie so skutočným serverom.

Preto sa naučíme, ako nastaviť a používať zabudovaný server Redis.

2. Závislosti

Začnime pridaním potrebných závislostí:

 org.springframework.boot test Spring-Boot-Starter-Data-Redis it.ozimov Embedded-Redis 0.7.2 Test org.springframework.boot Spring-Boot-Starter-Test Test 

The test štartovacej pružiny závislosť obsahuje všetko, čo potrebujeme na spustenie integračných testov.

Okrem toho vložený-redis obsahuje zabudovaný server, ktorý použijeme.

3. Inštalácia

Po pridaní závislostí by sme mali definovať nastavenia spojenia medzi serverom Redis a našou aplikáciou.

Začnime vytvorením triedy, ktorá bude obsahovať naše vlastnosti:

@ Konfigurácia verejná trieda 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; } // zakladatelia}

Ďalej by sme mali vytvoriť konfiguračnú triedu, ktorá definuje pripojenie a používa naše vlastnosti:

@Configuration @EnableRedisRepositories verejná trieda RedisConfiguration {@Bean public LettuceConnectionFactory redisConnectionFactory (RedisProperties redisProperties) {return new LettuceConnectionFactory (redisProperties.getRedisHost (), redisProperties.getRedisPort () } @Bean public RedisTemplate redisTemplate (LettuceConnectionFactory connectionFactory) {RedisTemplate template = new RedisTemplate (); template.setConnectionFactory (connectionFactory); návratová šablóna; }}

Konfigurácia je celkom jednoduchá. Ďalej nám umožňuje prevádzkovať zabudovaný server na inom porte.

V našom článku Úvod do jarných dát Redis sa dozviete viac o Redis s jarným spustením.

4. Zabudovaný server Redis

Teraz nakonfigurujeme zabudovaný server a použijeme ho v jednom z našich testov.

Najskôr si vytvorme application.properties súbor v adresári testovacích prostriedkov (src / test / zdroje):

spring.redis.host = localhost spring.redis.port = 6370

Potom vytvoríme a @ TestConfiguration- komentovaná trieda:

@TestConfiguration verejná trieda TestRedisConfiguration {private RedisServer redisServer; public TestRedisConfiguration (RedisProperties redisProperties) {this.redisServer = nový RedisServer (redisProperties.getRedisPort ()); } @PostConstruct public void postConstruct () {redisServer.start (); } @PreDestroy public void preDestroy () {redisServer.stop (); }}

Server sa spustí, až bude kontext hotový. Začína sa to na našom počítači na porte, ktorý sme definovali v našich vlastnostiach. Napríklad teraz môžeme spustiť test bez zastavenia skutočného servera Redis.

V ideálnom prípade by sme to chceli spustiť na náhodne dostupnom porte, ale zabudovaný Redis túto funkciu ešte nemá. To, čo by sme mohli urobiť práve teraz, je získať náhodný port cez ServerSocket API.

Server sa navyše zastaví, akonáhle dôjde k zničeniu kontextu.

Server je možné vybaviť aj našim vlastným spustiteľným súborom:

this.redisServer = nový RedisServer ("/ cesta / redis", redisProperties.getRedisPort ());

Ďalej je možné spustiteľný súbor definovať pre každý operačný systém:

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 = nový RedisServer (customProvider, redisProperties.getRedisPort ());

Na záver vytvoríme test, ktorý bude používať náš TestRedisConfiguration trieda:

@RunWith (SpringRunner.class) @SpringBootTest (classes = TestRedisConfiguration.class) verejná trieda UserRepositoryIntegrationTest {@Autowired private UserRepository userRepository; @Test public void shouldSaveUser_toRedis () {UUID id = UUID.randomUUID (); User user = new User (id, "name"); Užívateľ uložený = userRepository.save (užívateľ); assertNotNull (uložené); }}

Používateľ bol uložený na náš vstavaný server Redis.

Ďalej sme museli pridať ručne TestRedisConfiguration do SpringBootTest. Ako sme už povedali, server sa spustil pred testom a po ňom sa zastavil.

5. Záver

Zabudovaný server Redis je dokonalým nástrojom na nahradenie skutočného servera v testovacom prostredí. V našom teste sme videli, ako ho nakonfigurovať a ako ho použiť.

Ako vždy, kód príkladov je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found