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.pswp.cn/diannao/90997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90997.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

持續集成 簡介環境搭建

1. 持續集成簡介 1.1 持續集成的作用 隨著互聯網的蓬勃發展,軟件生命周期模型也經歷了幾個比較大的階段,從最初的瀑布模型,到 V 模型,再到現在的敏捷或者 devops,不論哪個階段,項目從立項到交付幾乎都離不開以下幾個過程,開發、構建、測試和發布,而且一直都在致力于又…

關于 java:11. 項目結構、Maven、Gradle 構建系統

一、Java 項目目錄結構標準1.1 Java 項目標準目錄結構總覽標準 Java 項目目錄結構(以 Maven / Gradle 通用結構為基礎):project-root/ ├── src/ │ ├── main/ │ │ ├── java/ # 主業務邏輯代碼(核心…

大數據的安全挑戰與應對

在大數據時代,大數據安全問題已成為開發者最為關注的核心議題之一。至少五年來,大數據已融入各類企業的運營體系,而采用先進數據分析解決方案的組織數量仍在持續增長。本文將明確當前市場中最關鍵的大數據安全問題與威脅,概述企業…

PostgreSQL ERROR: out of shared memory處理方式

系統允許的總鎖數 SELECT (SELECT setting::int FROM pg_settings WHERE name max_locks_per_transaction) * (SELECT setting::int FROM pg_settings WHERE name max_connections) (SELECT setting::int FROM pg_settings WHERE name max_prepared_transactions);當鎖大于…

Django 模型(Model)

1. 模型簡介 ORM 簡介 MVC 框架中一個重要的部分就是 ORM,它實現了數據模型與數據庫的解耦,即數據模型的設計不需要依賴于特定的數據庫,通過簡單的配置就可以輕松更換數據庫。即直接面向對象操作數據,無需考慮 sql 語句。 ORM 是“對象-關系-映射”的簡稱,主要任務是:…

深入解析Hadoop RPC:技術細節與推廣應用

Hadoop RPC框架概述在分布式系統的核心架構中,遠程過程調用(RPC)機制如同神經網絡般連接著各個計算節點。Hadoop作為大數據處理的基石,其自主研發的RPC框架不僅支撐著內部組件的協同運作,更以獨特的工程哲學詮釋了分布…

為什么玩游戲用UDP,看網頁用TCP?

故事場景:兩種不同的遠程溝通方式假設你需要和遠方的朋友溝通一件重要的事情。方式一:TCP — 打一個重要的電話打電話是一種非常嚴謹、可靠的溝通方式。? 1. 建立連接 (三次握手):? 你拿起電話,撥號(SYN)。? 朋友那…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆(二)

High-Fidelity Texture Transfer Using Multi-Scale Depth-Aware Diffusion 這篇文章可以從一個帶有紋理的幾何物體出發,將其身上的紋理自動提取并映射到任意的幾何拓撲結構上(見下圖紅線左側);或者從一個白模幾何對象出發&#x…

深度學習圖像分類數據集—玉米粒質量識別分類

該數據集為圖像分類數據集,適用于ResNet、VGG等卷積神經網絡,SENet、CBAM等注意力機制相關算法,Vision Transformer等Transformer相關算法。 數據集信息介紹:玉米粒質量識別分類:[crush, good, mul] 訓練數據集總共有3…

Unity VR手術模擬系統架構分析與數據流設計

Unity VR手術模擬系統架構分析與數據流設計 前言 本文將深入分析一個基于Unity引擎開發的多人VR手術模擬系統。該系統采用先進的網絡架構設計,支持多用戶實時協作,具備完整的手術流程引導和精確的工具交互功能。通過對系統架構和數據管道的詳細剖析&…

【Spring Boot】Spring Boot 4.0 的顛覆性AI特性全景解析,結合智能編碼實戰案例、底層架構革新及Prompt工程手冊

Spring Boot 4.0 的顛覆性AI特性全景解析,結合智能編碼實戰案例、底層架構革新及Prompt工程手冊一、Spring Boot 4.0 核心AI能力矩陣二、AI智能編碼插件實戰(Spring AI Assistant)1. 安裝與激活2. 實時代碼生成場景3. 缺陷預測與修復三、AI引…

audiobookshelf-web 項目怎么運行

git clone https://github.com/audiobookshelf/audiobookshelf-web.git cd audiobookshelf-web npm i 啟動項目 npm run dev http://localhost:3000/

掃描文件 PDF / 圖片 糾斜 | 圖片去黑邊 / 裁剪 / 壓縮

問題:掃描后形成的 PDF 或圖片文檔常存在變形傾斜等問題,手動調整頗為耗時費力。 一、PDF 糾斜 - Adobe Acrobat DC 1、所用功能 掃描和 OCR: 識別文本:在文件中 → 設置 確定后啟動掃描,識別過程中自動糾偏。 2、…

適配器模式:兼容不兼容接口

將一個類的接口轉換成客戶端期望的另一個接口,解決接口不兼容問題。代碼示例:// 目標接口(客戶端期望的格式) interface ModernPrinter {void printDocument(String text); }// 被適配的舊類(不兼容) class…

流程控制:從基礎結構到跨語言實踐與優化

流程控制 一、流程控制基礎概念與核心價值 (一)流程控制定義與本質 流程控制是通過特定邏輯結構決定程序執行順序的機制,核心是控制代碼運行路徑,包括順序執行、條件分支、循環迭代三大核心邏輯。其本質是將無序的指令集合轉化為有…

Http與Https區別和聯系

一、HTTP 詳解 HTTP(HyperText Transfer Protocol)?? 是互聯網數據通信的基礎協議,用于客戶端(瀏覽器)與服務器之間的請求-響應交互 核心特性??: 1.無連接(Connectionless)??…

飛算JavaAI:開啟 Java 開發 “人機協作” 新紀元

每日一句 明天是新的一天, 你也不再是昨天的你。 目錄每日一句一、需求到架構:AI深度介入開發“源頭設計”1.1 需求結構化:自然語言到技術要素的精準轉化1.2 架構方案生成:基于最佳實踐的動態適配二、編碼全流程:從“…

Qt項目鍛煉——TODO(五)

發現問題如果是自己創建的ui文件,怎么包含進自己的窗口類并且成為ui成員?一般來說Qt designer 會根據你.ui文件生成對應的ui_文件名這個類(文件名是ui文件名),它包含了所有 UI 組件(如按鈕、文本框、標簽等…

Vue框架之模板語法全面解析

Vue框架之模板語法全面解析一、模板語法的核心思想二、插值表達式:數據渲染的基礎2.1 基本用法:渲染文本2.2 純HTML渲染:v-html指令2.3 一次性插值:v-once指令三、指令系統:控制DOM的行為3.1 條件渲染:v-if…

從零開始的語言模型構建 CS336 第一課(一)

語言模型的發展歷史 🏗 Early foundation models (2010年代后期) 2018:ELMo(基于 LSTM 預訓練 微調)[Peters 2018]2018:BERT(基于 Transformer 預訓練 微調)[Devlin 2018]2019:G…