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

SpringBoot单元测试类拿不到bean报空指针异常

原代码

package com.atguigu.gulimall.product;import com.aliyun.oss.OSSClient;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;//开始我是没有@RunWith(SpringRunner.class)注解的
//@RunWith(SpringRunner.class)
@SpringBootTest
public class GulimallProductApplicationTests {@ResourceOSSClient ossClient;@Value("${spring.cloud.alicloud.oss.endpoint}")String a;@Testpublic void testUpload() throws FileNotFoundException {System.out.println(a);String filePath= "E:\\huawei.png";InputStream inputStream = new FileInputStream(filePath);ossClient.putObject("gulimall-xx","huawei.png",inputStream);ossClient.shutdown();System.out.println("上传完成。。。。");}
}

结果我单元测试的时候报空指针,spring并没有注入我这个OSSClient 这个bean,经查,是因为SpringBoot的版本不一样导致的这个问题,一开始创建的是高版本的SpringBoot项目,后面在代码中把依赖版本降低了,但创建项目默认生成的代码还是高版本的

版本问题

针对SpringBoot的测试类,2.2版本之前和之后是不一样的。 在2.2版本之前需要添加注解 @SpringBootTest 和 @RunWith(SpringRunner.class) ,在Spring容器环境下进行测试,因为 @Test 导包的是org.junit.Test。 在2.2版本之后只需要添加注解 @SpringBootTest,其中@Test导包为org.junit.jupiter.api.Test。

包路径不一致

注意测试类的包名和启动类的包名一定要一致,否则扫描不到bean对象会报空异常,如下图:

总结:在使用@SpringBootTest时,最好指定启动类,如:

@SpringBootTest(classes = {xxx.class})

http://www.dtcms.com/a/277093.html

相关文章:

  • 算法 - 蛇形矩阵-上三角
  • 2.3 单链表的应用
  • 图像读取与模型保存--基于NWPU-RESISC45数据集的图像二分类实战
  • stm32f103c8t6移植freeRTOS内存不足报错问题的解决办法
  • 浏览器渲染原理与性能优化全解析
  • 快速傅里叶变换(FFT)中的振幅和相位
  • 【计算机网络架构】环型架构简介
  • 在 C# 中调用 Python 脚本:实现跨语言功能集成
  • ADB 调试日志全攻略:如何开启与关闭 `ADB_TRACE` 日志
  • CS课程项目设计1:交互友好的井字棋游戏
  • 详解Linux下多进程与多线程通信(二)
  • 【QT】使用QSS进行界面美化
  • 异或为什么叫异或
  • 【读书笔记】《Effective Modern C++》第3章 Moving to Modern C++
  • Datawhale AI夏令营——基于带货视频评论的用户洞察挑战赛
  • 【PTA数据结构 | C语言版】简单计算器
  • 17.使用DenseNet网络进行Fashion-Mnist分类
  • LabVIEW调用外部DLL
  • 深度学习图像分类数据集—七种树叶识别分类
  • 零基础 “入坑” Java--- 十、继承
  • ARC 03 从Github Action job 到 runner pod
  • PPO(近端策略优化)
  • 华为HarmonyOS 5.0深度解析:跨设备算力池技术白皮书(2025全场景智慧中枢)
  • 【C++】list及其模拟实现
  • C++--List
  • AI交互中的礼貌用语:“谢谢“的效用与代价分析
  • 【操作系统-Day 5】通往内核的唯一桥梁:系统调用 (System Call)
  • MVC 参考手册
  • C++值类别与移动语义
  • linux shell从入门到精通(一)——初识Shell程序