用于服务的集成测试。
参考链接:Embedded Redis Server with Spring Boot Test | Baeldung
导入依赖
// <https://mvnrepository.com/artifact/it.ozimov/embedded-redis>
testImplementation group: 'it.ozimov', name: 'embedded-redis', version: '0.7.3'
JAVA 配置类
添加依赖项之后,我们应该定义 Redis 服务器和应用程序之间的连接设置。
让我们首先创建一个类来保存我们的属性:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedisProperties {
private intredisPort;
private StringredisHost;
public RedisProperties(
@Value("${spring.redis.port}") int redisPort,
@Value("${spring.redis.host}") String redisHost) {
this.redisPort= redisPort;
this.redisHost= redisHost;
}
public int getRedisPort() {
returnredisPort;
}
public void setRedisPort(int redisPort) {
this.redisPort= redisPort;
}
public String getRedisHost() {
returnredisHost;
}
public void setRedisHost(String redisHost) {
this.redisHost= redisHost;
}
}
接下来,我们应该创建一个定义连接并使用属性的配置类:
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
@TestConfiguration
@EnableRedisRepositories
public class RedisConfiguration {
@Bean(name = "redisConnectionFactory")
public LettuceConnectionFactory redisConnectionFactory(
RedisProperties redisProperties) {
return new LettuceConnectionFactory(
redisProperties.getRedisHost(),
redisProperties.getRedisPort());
}
}
现在,我们将配置嵌入式服务器,并在我们的一个测试中使用它。
首先,让我们在测试资源目录(src/test/resources)中创建一个 application.properties 文件
spring:
redis:
host: 127.0.0.1
port: 26379
之后,我们将创建一个@TestConfiguration 注释类:
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.boot.test.context.TestConfiguration;
import redis.embedded.RedisServer;
@TestConfiguration
public class TestRedisConfiguration {
private static RedisServerredisServer;
public TestRedisConfiguration(RedisProperties redisProperties) {
// if maxheap exception occurs .please open code ↓.
// redisServer = RedisServer.builder().port(redisProperties.getRedisPort()).setting("maxheap 256000000")
// .build();
redisServer= RedisServer.builder().port(redisProperties.getRedisPort()).build();
}
public static void stopServer() {
if (redisServer!= null) {redisServer.stop();}
}
@PostConstruct
public void postConstruct() {
redisServer.start();
}
@PreDestroy
public void preDestroy() {
redisServer.stop();
}
}
上下文一旦启动,服务器就会启动。它将从我们在属性中定义的端口上的机器上启动
测试缓存功能