Ugrađeni Redis poslužitelj s proljetnim testom pokretanja

1. Pregled

Spring Data Redis pruža jednostavan način integracije s instancama Redisa.

Međutim, u nekim slučajevima, prikladnije je koristiti ugrađeni poslužitelj nego stvoriti okruženje s pravim poslužiteljem.

Stoga ćemo naučiti kako postaviti i koristiti ugrađeni Redis poslužitelj.

2. Ovisnosti

Počnimo s dodavanjem potrebnih ovisnosti:

 org.springframework.boot test-spring-boot-starter-data-redis it.ozimov embedded-redis 0.7.2 test org.springframework.boot test test spring-boot-starter-test 

The proljetni-boot-starter-test ovisnost sadrži sve što nam je potrebno za pokretanje integracijskih testova.

Uz to, ugrađeni-redis sadrži ugrađeni poslužitelj koji ćemo koristiti.

3. Postavljanje

Nakon dodavanja ovisnosti, trebali bismo definirati postavke veze između Redis poslužitelja i naše aplikacije.

Počnimo s izradom klase koja će sadržavati naša svojstva:

@Configuration javna klasa RedisProperties {private int redisPort; privatni niz redisHost; javni RedisProperties (@Value ("$ {spring.redis.port}") int redisPort, @Value ("$ {spring.redis.host}") Niz redisHost) {this.redisPort = redisPort; this.redisHost = redisHost; } // dobivači}

Dalje, trebali bismo stvoriti klasu konfiguracije koja definira vezu i koristi naša svojstva:

@Configuration @EnableRedisRepositories javna klasa RedisConfiguration {@Bean public LettuceConnectionFactory redisConnectionFactory (RedisProperties redisProperties) {return new LettuceConnectionFactory (redisProperties.getRedisHost (), redgetProperties; redgetProperties;) } @Bean public RedisTemplate redisTemplate (LettuceConnectionFactory connectionFactory) {RedisTemplate template = new RedisTemplate (); template.setConnectionFactory (connectionFactory); predložak za povratak; }}

Konfiguracija je vrlo jednostavna. Uz to, omogućuje nam pokretanje ugrađenog poslužitelja na drugom priključku.

Pogledajte naš članak Uvod u Spring Data Redis da biste saznali više o Redisu s Spring Bootom.

4. Ugrađeni Redis poslužitelj

Sada ćemo konfigurirati ugrađeni poslužitelj i koristiti ga u jednom od naših testova.

Prvo, stvorimo primjena.svojstva datoteku u direktoriju testnog resursa (src / test / resources):

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

Nakon toga ćemo stvoriti @TestConfiguration-komentirani razred:

@TestConfiguration javna klasa TestRedisConfiguration {private RedisServer redisServer; javna TestRedisConfiguration (RedisProperties redisProperties) {this.redisServer = novi RedisServer (redisProperties.getRedisPort ()); } @PostConstruct javna void postConstruct () {redisServer.start (); } @PreDestroy javna void preDestroy () {redisServer.stop (); }}

Poslužitelj će se pokrenuti nakon što kontekst prođe. Započet će na našem stroju na priključku koji smo definirali u svojim svojstvima. Na primjer, sada možemo pokrenuti test bez zaustavljanja stvarnog Redis poslužitelja.

Idealno bi bilo da ga pokrenemo na slučajno dostupnom priključku, ali ugrađeni Redis još nema ovu značajku. Ono što bismo mogli učiniti sada jest dobiti slučajni port putem API-ja ServerSocket.

Uz to, poslužitelj će se zaustaviti kada se kontekst uništi.

Poslužitelj se također može dobiti s vlastitom izvršnom datotekom:

this.redisServer = novi RedisServer ("/ put / redis", redisProperties.getRedisPort ());

Nadalje, izvršna se datoteka može definirati po operativnom sustavu:

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

Napokon, kreirajmo test koji će koristiti naš TestRedisConfiguration razred:

@RunWith (SpringRunner.class) @SpringBootTest (classes = TestRedisConfiguration.class) javna klasa UserRepositoryIntegrationTest {@Autowired private UserRepository userRepository; @Test javna praznina shouldSaveUser_toRedis () {UUID id = UUID.randomUUID (); Korisnik korisnik = novi korisnik (id, "ime"); Korisnik je spremio = userRepository.save (korisnik); assertNotNull (spremljeno); }}

Korisnik je spremljen na naš ugrađeni Redis poslužitelj.

Pored toga, morali smo dodati ručno TestRedisConfiguration do SpringBootTest. Kao što smo ranije rekli, poslužitelj se pokrenuo prije testa i zaustavio nakon.

5. Zaključak

Ugrađeni Redis poslužitelj savršen je alat za zamjenu stvarnog poslužitelja u testnom okruženju. Vidjeli smo kako ga konfigurirati i kako ga koristiti u našem testu.

Kao i uvijek, kod za primjere dostupan je na GitHubu.