当前位置: 首页 > article >正文

springboot项目下面的单元测试注入的RedisConnectionFactory类redisConnectionFactory值为什么为空呢?

你遇到的问题是:

RedisConnectionFactory redisConnectionFactory 在单元测试中为 null

这是 Spring Boot 单元测试中非常常见的问题,根本原因是你的测试类没有启用 Spring 容器上下文,导致 @Resource 注解无法注入 Bean。

✅ 正确做法:使用 Spring Boot 的单元测试支持
✅ 1. 添加必要的注解
你需要在你的测试类上加上如下两个关键注解:

Java
深色版本
@RunWith(SpringRunner.class)
@SpringBootTest
这样 Spring 才能启动上下文,并完成自动装配。

✅ 2. 修改后的完整代码如下:
Java
深色版本
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.RedisConnectionFactory;

import javax.annotation.Resource;
import java.util.Properties;

@RunWith(SpringRunner.class)        // 启用 Spring 测试支持
@SpringBootTest                      // 启动 Spring Boot 上下文
public class RedisConnectionFactoryTest {

    @Resource
    private RedisConnectionFactory redisConnectionFactory;

    @Test
    public void test1() {
        // 默认 class org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
        System.out.println(redisConnectionFactory.getClass());

        // 当前db的key数量
        Long keyCount = redisConnectionFactory.getConnection().dbSize();
        System.out.println("当前db的key数量 = " + keyCount);

        Properties properties = redisConnectionFactory.getConnection().info();
        System.out.println(properties);
    }
}
📌 注意事项:
如果你在项目中同时配置了 Jedis 和 Lettuce(如你的 application.yml 所示),Spring Boot 默认会优先使用 Lettuce。
确保你的 Redis 服务器可以被访问:
IP、端口是否正确?
是否有防火墙限制?
密码是否正确?
🔍 可选:查看当前使用的 Redis 客户端类型
你可以通过打印 redisConnectionFactory 的类型来确认当前使用的是哪个客户端:

Java
深色版本
System.out.println(redisConnectionFactory.getClass());
// 输出示例:class org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
✅ 补充说明:为什么之前为空?
你原来的测试类只是一个普通的 JUnit 测试类,没有加载 Spring 上下文,所以 Spring 无法识别 @Resource 或 @Autowired 注解,也就不会为你注入任何 Bean。

原因    解释
没有 @SpringBootTest    Spring 上下文未启动,Bean 无法注入
没有 @RunWith(SpringRunner.class)    JUnit 不知道要和 Spring 集成
所以 redisConnectionFactory == null    Spring 没有注入
✅ 总结
问题    原因    解决方案
redisConnectionFactory 为 null    没有启用 Spring 上下文    添加 @SpringBootTest 和 @RunWith(SpringRunner.class)
无法连接 Redis    配置错误或网络不通    检查 Redis 地址、密码、端口、防火墙等
不确定使用的是 Jedis 还是 Lettuce    默认是 Lettuce    查看 redisConnectionFactory.getClass()

http://www.lryc.cn/news/2396983.html

相关文章:

  • MyBatis操作数据库(2)
  • C++面向对象(二)
  • 【C语言入门级教学】冒泡排序和指针数组
  • shell脚本中常用的命令
  • Nuxt3部署
  • 网络攻防技术一:绪论
  • 【人工智能】deepseek七篇论文阅读笔记大纲
  • unix/linux source 命令,在当前的 Shell 会话中读取并执行指定文件中的命令
  • [leetcode] 二分算法
  • imgsz参数设置
  • 【算法】分支限界
  • 使用 C/C++ 和 OpenCV 调用摄像头
  • 历史数据分析——广州港
  • 数据库管理与高可用-MySQL全量,增量备份与恢复
  • 从gitee仓库中恢复IDEA项目某一版本
  • 用dayjs解析时间戳,我被提了bug
  • [git每日一句]Changes not staged for commit
  • 架构师面试题整理
  • 类和对象:实现日期类
  • 基于springboot的运动员健康管理系统
  • 华为云Flexus+DeepSeek征文 | 初探华为云ModelArts Studio:部署DeepSeek-V3/R1商用服务的详细步骤
  • 下载即转化的商业密码:解析华为应用商店CPD广告的智能投放逻辑
  • 分布式锁和数据库锁完成接口幂等性
  • 浅谈JMeter之常见问题Address already in use: connect
  • 【机器学习基础】机器学习入门核心算法:随机森林(Random Forest)
  • 【深度学习】12. VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4
  • 常规算法学习
  • Google 发布的全新导航库:Jetpack Navigation 3
  • Arbitrum Stylus 合约实战 :Rust 实现 ERC20
  • 电脑故障基础知识