测试之嵌入式Redis

用于服务的集成测试。

参考链接: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();
    }
}

上下文一旦启动,服务器就会启动。它将从我们在属性中定义的端口上的机器上启动

测试缓存功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值