当前位置: 首页 > 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.lryc.cn/news/586786.html

相关文章:

  • 从架构到代码:飞算JavaAI电商订单管理系统技术解构
  • 决策树的相关理论学习
  • FusionOne HCI 23 超融合实施手册(超聚变超融合)
  • 【C++】多线程同步三剑客介绍
  • 代码随想录算法训练营第十七天
  • 【C++】第十五节—一文详解 | 继承
  • JVM 垃圾收集算法全面解析
  • DC-DC变换器最基本拓扑 -Buck电路和Boost电路
  • ROS2---NodeOptions
  • MacOS使用Multipass快速搭建轻量级k3s集群
  • mac上BRPC的CMakeLists.txt优化:解决Protobuf路径问题
  • TensorFlow深度学习实战(24)——变分自编码器详解与实现
  • Vue 3 动态ref问题
  • 封装---统一封装处理页面标题
  • C++模版编程:类模版与继承
  • Qt 3D模块加载复杂模型
  • vue应用如何实现在 A 标签页登出,希望 B 标签页也自动感知并退出登录
  • 语音识别的速度革命:从 Whisper 到 Whisper-CTranslate2,我经历了什么?
  • 数据库3.0
  • HarmonyOS-ArkUI Web控件基础铺垫1-HTTP协议-数据包内容
  • EPLAN多项目并行,电气设计许可如何不浪费?
  • (S4)Efficiently Modeling Long Sequences with Structured State Spaces论文精读(逐段解析)
  • ReAct论文解读(1)—什么是ReAct?
  • 基于YOLOv11的无人机目标检测实战(Windows环境)
  • Spring Cloud Gateway 实战指南
  • 力扣经典算法篇-21- 两数之和 II - 输入有序数组(固定一端 + 二分查找法,双指针法)
  • MongoDB性能优化实战指南:原理、实践与案例
  • git实际工作流程
  • 【零基础入门unity游戏开发——unity3D篇】3D光源之——unity反射和反射探针技术
  • SPSSPRO:数据分析市场SaaS挑战者的战略分析