Beágyazott Redis szerver tavaszi rendszerindítási teszttel

1. Áttekintés

A Spring Data Redis egyszerű módot kínál a Redis-példányokkal való integrációra.

Bizonyos esetekben azonban kényelmesebb beágyazott szervert használni, mint valódi szerverrel környezetet létrehozni.

Ezért megtanuljuk, hogyan kell beállítani és használni az Embedded Redis kiszolgálót.

2. Függőségek

Kezdjük a szükséges függőségek hozzáadásával:

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

A tavasz-csomagtartó-indító-teszt a függőség mindent tartalmaz, amire szükségünk van az integrációs tesztek futtatásához.

Ezenkívül a beágyazott-redis tartalmazza a beágyazott szervert, amelyet használni fogunk.

3. Beállítás

A függőségek hozzáadása után meg kell határoznunk a Redis szerver és az alkalmazás közötti kapcsolat beállításait.

Kezdjük egy olyan osztály létrehozásával, amely megtartja tulajdonságainkat:

@Configuration nyilvános osztály RedisProperties {private int redisPort; privát String redisHost; public RedisProperties (@Value ("$ {spring.redis.port}") int redisPort, @Value ("$ {spring.redis.host}") String redisHost) {this.redisPort = redisPort; this.redisHost = redisHost; } // getters}

Ezután létre kell hoznunk egy konfigurációs osztályt, amely meghatározza a kapcsolatot és felhasználja a tulajdonságainkat:

@Configuration @EnableRedisRepositories public class RedisConfiguration {@Bean public LettuceConnectionFactory redisConnectionFactory (RedisProperties redisProperties) {return new LettuceConnectionFactory (redisProperties.getRedisHost (), redisPropis. } @Bean public RedisTemplate redisTemplate (LettuceConnectionFactory connectionFactory) {RedisTemplate template = new RedisTemplate (); template.setConnectionFactory (connectionFactory); visszatérési sablon; }}

A konfigurálás meglehetősen egyszerű. Ezenkívül lehetővé teszi számunkra, hogy a beágyazott szervert egy másik porton futtassuk.

Tekintse meg a Spring Data Bevezetés cikkünket, hogy többet tudjon meg a Redis with Spring Boot termékről.

4. Beágyazott Redis Server

Most konfiguráljuk a beágyazott szervert, és az egyik tesztünk során felhasználjuk.

Először hozzunk létre egy alkalmazás.tulajdonságok fájl a teszt erőforrás könyvtárban (src / test / resources):

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

Ezt követően létrehozunk egy @TestConfiguration-jegyzet nélküli osztály:

@TestConfiguration public class TestRedisConfiguration {private RedisServer redisServer; public TestRedisConfiguration (RedisProperties redisProperties) {this.redisServer = új RedisServer (redisProperties.getRedisPort ()); } @PostConstruct public void postConstruct () {redisServer.start (); } @PreDestroy public void preDestroy () {redisServer.stop (); }}

A kiszolgáló elindul, ha a kontextus fennáll. A gépünkön azon a porton indul, amelyet a tulajdonságunkban definiáltunk. Például most futtathatjuk a tesztet a tényleges Redis szerver leállítása nélkül.

Ideális esetben a véletlenszerűen elérhető porton szeretnénk elindítani, de a beágyazott Redis még nem rendelkezik ezzel a funkcióval. Amit most megtehetnénk, az az, hogy megszerezzük a véletlenszerű portot a ServerSocket API-n keresztül.

Ezenkívül a szerver leáll, ha a kontextus megsemmisül.

A szerver a saját futtatható fájlunkkal is ellátható:

this.redisServer = új RedisServer ("/ elérési út / redis", redisProperties.getRedisPort ());

Ezenkívül a futtatható fájl operációs rendszerenként meghatározható:

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 ());

Végül hozzunk létre egy tesztet, amely a mi felhasználónk lesz TestRedisConfiguration osztály:

@RunWith (SpringRunner.class) @SpringBootTest (class = TestRedisConfiguration.class) public class UserRepositoryIntegrationTest {@Autowired private UserRepository userRepository; @Test public void shouldSaveUser_toRedis () {UUID id = UUID.randomUUID (); Felhasználó felhasználó = új Felhasználó (id, "név"); Felhasználó mentve = userRepository.save (felhasználó); assertNotNull (mentve); }}

A felhasználót elmentettük a beágyazott Redis szerverünkre.

Ezenkívül manuálisan kellett hozzáadnunk TestRedisConfiguration nak nek SpringBootTest. Mint korábban mondtuk, a szerver a teszt előtt elindult, és utána leállt.

5. Következtetés

A beágyazott Redis szerver tökéletes eszköz a tényleges kiszolgáló cseréjére a tesztkörnyezetben. Láttuk, hogyan kell konfigurálni és hogyan kell használni a tesztünkben.

Mint mindig, a példák kódja elérhető a GitHubon.