最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot項目中單元測試時注入bean失敗的解決方案

 更新時間:2022年11月23日 11:24:26   作者:柒的意志  
這篇文章主要介紹了Springboot項目中單元測試時注入bean失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Springboot項目中單元測試時注入bean失敗

問題背景

最近公司項目搭了一個springboot項目進行開發(fā),在單元測試時,由于生成項目后可能哪個同事把項目生產(chǎn)的test文件目錄刪了,也不知道是項目生成時test目錄沒有生成,需要自己建立一個test目錄進行測試。

就是下圖中的紅框部分。。。

                                                                           

問題描述

在上圖中的test目錄建好之后寫測試類的時候死活bean注入不成功,注意這里解決的問題是不考慮springboot版本等問題的

如遇到springboot版本的問題導致bean類無法注入到項目中,可能是注解和springboot版本不匹配導致啟動類啟動時掃描不到相應的bean類,這種錯誤的解法,網(wǎng)上一收一大把,這里就不在給寫法了。。。

問題解決

也就是測試類的包名一定要和啟動類的包名一致,包名必須一致!必須一致!一致!重要的話說三遍?。?!

如果包名不一致,當啟動類啟動時就不知道去哪掃描bean,所以也就無法注入。

所以這里也給大家一個解決bean注入失敗的思路:

1.首先檢測測試類包名和啟動類包名是否一致!

2.檢查自己使用的注解是不是和當前springboot的版本一致。

3.檢測開發(fā)代碼中的bean類是否注入是正常的,然后再根據(jù)情況逐步排查。

Springboot單元測試,注入失敗,報空指針錯誤

我們在使用項目的時候,常常需求去單元測試,去測試我們寫的接口是否可以正常運行。自己在練習Spring Boot 搭建 Redis的時候進行測試。

下面是測試類

/**
?* @author jins
?* @date on 2018/5/6.
?*/
@RunWith(SpringJUnit4ClassRunner.class)
public class RedisTest {
?
? ? @Autowired
? ? private StringRedisTemplate stringRedisTemplate;
?
? ? @Test
? ? public void redisTest(){
? ? ? ? stringRedisTemplate.opsForValue().set("ceshi","redis");
? ? ? ? System.out.println(stringRedisTemplate.opsForValue().get("ceshi"));
?
? ? }
}

運行的時候發(fā)現(xiàn),直接會報NullPointException,或者是No bean.比較疑惑,自己想這應該是spring 容器里面沒有注入Bean導致的,我們沒有從spring 容器中拿到 StringRedisTemplate Bean 所以會報錯。

然后自己去網(wǎng)上看了一下,缺少了注解 @SpringBootTest ,自己看了下文檔.這里點進去注解顯示以下內(nèi)容.看了內(nèi)容知道,通過@SpringBootTest注解,給我們提供了Spring容器管理.加上之后,可以運行.

Annotation that can be specified on a test class that runs Spring Boot based tests.
Provides the following features over and above the regular Spring TestContext
Framework:

注解制定了一個測試類運行了Spring Boot環(huán)境。提供了以下一些特性: 

Uses SpringBootContextLoader as the default ContextLoader when no specific ContextConfiguration#loader() @ContextConfiguration(loader=...) is defined.

當沒有特定的ContextConfiguration#loader()(@ContextConfiguration(loader=...))被定義那么就是SpringBootContextLoader作為默認的ContextLoader。 

Automatically searches for a SpringBootConfiguration @SpringBootConfiguration when nested @Configuration is not used, and no explicit #classes() classes are
specified.

自動搜索到SpringBootConfiguration注解的文件。 

Allows custom Environment properties to be defined using the properties() properties attribute}.

允許自動注入Environment類讀取配置文件。 

Provides support for different #webEnvironment() webEnvironment modes,
including the ability to start a fully running container listening on a
WebEnvironment#DEFINED_PORT defined or WebEnvironment#RANDOM_PORT
random port.

提供一個webEnvironment環(huán)境,可以完整的允許一個web環(huán)境使用隨機的端口或者自定義的端口。

Registers a org.springframework.boot.test.web.client.TestRestTemplate
TestRestTemplate bean for use in web tests that are using a fully running container.

注冊了TestRestTemplate類可以去做接口調(diào)用。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • IDEA使用jformdesigner插件做管理系統(tǒng)MVC架構的步驟和實現(xiàn)思路

    IDEA使用jformdesigner插件做管理系統(tǒng)MVC架構的步驟和實現(xiàn)思路

    在?IntelliJ?IDEA?中結(jié)合?JFormDesigner?插件,通過?Swing?框架實現(xiàn)一個管理系統(tǒng)的?MVC?架構是一種經(jīng)典的開發(fā)方式,以下是具體的步驟和實現(xiàn)思路,包含從項目創(chuàng)建到?MVC?架構的核心代碼實現(xiàn),需要的朋友可以參考下
    2024-12-12
  • Spring中的@ConfigurationProperties在方法上的使用詳解

    Spring中的@ConfigurationProperties在方法上的使用詳解

    這篇文章主要介紹了Spring中的@ConfigurationProperties在方法上的使用詳解,@ConfigurationProperties應該經(jīng)常被使用到,作用在類上的時候,將該類的屬性取值?與配置文件綁定,并生成配置bean對象,放入spring容器中,提供給其他地方使用,需要的朋友可以參考下
    2024-01-01
  • Selenium+Tesseract-OCR智能識別驗證碼爬取網(wǎng)頁數(shù)據(jù)的實例

    Selenium+Tesseract-OCR智能識別驗證碼爬取網(wǎng)頁數(shù)據(jù)的實例

    本文主要介紹了Selenium+Tesseract-OCR智能識別驗證碼爬取網(wǎng)頁數(shù)據(jù),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JAVA程序內(nèi)存溢出問題原因分析

    JAVA程序內(nèi)存溢出問題原因分析

    這篇文章主要介紹了JAVA程序內(nèi)存溢出問題原因,較為詳細的分析java導致程序內(nèi)存溢出的原因與解決方法,需要的朋友可以參考下
    2015-06-06
  • java實現(xiàn)多文件上傳至本地服務器功能

    java實現(xiàn)多文件上傳至本地服務器功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)多文件上傳至本地服務器功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java8新特性之泛型的目標類型推斷_動力節(jié)點Java學院整理

    Java8新特性之泛型的目標類型推斷_動力節(jié)點Java學院整理

    泛型是Java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)。下面通過本文給分享Java8新特性之泛型的目標類型推斷,感興趣的朋友參考下吧
    2017-06-06
  • 入門java的第一步HelloWorld

    入門java的第一步HelloWorld

    這篇文章主要介紹了入門java的第一步-Hello,World,文中通過示例代碼介紹的非常詳細,對大家的java初步學習具有一定的學習價值,需要的朋友可以參考下
    2021-04-04
  • 一文詳解Java閉鎖和柵欄的實現(xiàn)

    一文詳解Java閉鎖和柵欄的實現(xiàn)

    閉鎖與柵欄是在多線程編程中的概念,因為在多線程中,我們不能控制線程的執(zhí)行狀態(tài),所以給線程加鎖,讓其按照我們的想法有秩序的執(zhí)行。本文將詳解Java閉鎖和柵欄的實現(xiàn),需要的可以參考一下
    2022-06-06
  • 詳解Spring的@Value作用與使用場景

    詳解Spring的@Value作用與使用場景

    這篇文章主要介紹了詳解Spring的@Value作用與使用場景,Spring為大家提供許多開箱即用的功能,@Value就是一個極其常用的功能,它能將配置信息注入到bean中去,需要的朋友可以參考下
    2023-05-05
  • mybatis?xml文件熱加載實現(xiàn)示例詳解

    mybatis?xml文件熱加載實現(xiàn)示例詳解

    這篇文章主要為大家介紹了mybatis?xml文件熱加載實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論

齐齐哈尔市| 平利县| 新巴尔虎左旗| 仙桃市| 乌拉特后旗| 元朗区| 克东县| 萨嘎县| 仪征市| 盐山县| 平定县| 津南区| 青海省| 犍为县| 武鸣县| 彰武县| 固原市| 安康市| 葵青区| 榆社县| 集贤县| 淮滨县| 沾益县| 桦南县| 颍上县| 桓台县| 武义县| 东港市| 达州市| 鄯善县| 仙桃市| 长汀县| 阳高县| 土默特左旗| 龙山县| 郯城县| 湖北省| 河北区| 临海市| 安国市| 万山特区|