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.