Embedded Redis for Spring Boot
You can use an embedded Redis like https://github.com/kstyrc/embedded-redis
- Add the dependency to your pom.xml
Adjust the properties for your integration test to point to your embedded redis, for example :
spring: redis: host: localhost port: 6379
Instanciate the embedded redis server in a component that is defined in your tests only :
@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(); } }
You can use ozimov/embedded-redis as a Maven(-test)-dependency (this is the successor of kstyrc/embedded-redis).
Add the dependency to your pom.xml
<dependencies> ... <dependency> <groupId>it.ozimov</groupId> <artifactId>embedded-redis</artifactId> <version>0.7.1</version> <scope>test</scope> </dependency>
Adjust your application properties for your integration test
spring.redis.host=localhost spring.redis.port=6379
Use the embedded redis server in a 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(); } }