欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot項(xiàng)目中單元測(cè)試時(shí)注入bean失敗的解決方案

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

Springboot項(xiàng)目中單元測(cè)試時(shí)注入bean失敗

問(wèn)題背景

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

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

                                                                           

問(wèn)題描述

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

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

問(wèn)題解決

也就是測(cè)試類的包名一定要和啟動(dòng)類的包名一致,包名必須一致!必須一致!一致!重要的話說(shuō)三遍!??!

如果包名不一致,當(dāng)啟動(dòng)類啟動(dòng)時(shí)就不知道去哪掃描bean,所以也就無(wú)法注入。

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

1.首先檢測(cè)測(cè)試類包名和啟動(dòng)類包名是否一致!

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

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

Springboot單元測(cè)試,注入失敗,報(bào)空指針錯(cuò)誤

我們?cè)谑褂庙?xiàng)目的時(shí)候,常常需求去單元測(cè)試,去測(cè)試我們寫的接口是否可以正常運(yùn)行。自己在練習(xí)Spring Boot 搭建 Redis的時(shí)候進(jìn)行測(cè)試。

下面是測(cè)試類

/**
?* @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"));
?
? ? }
}

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

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

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:

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

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

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

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

自動(dòng)搜索到SpringBootConfiguration注解的文件。 

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

允許自動(dòng)注入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.

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

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

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

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

相關(guān)文章

  • 關(guān)于Java中配置ElasticSearch集群環(huán)境賬號(hào)密碼的問(wèn)題

    關(guān)于Java中配置ElasticSearch集群環(huán)境賬號(hào)密碼的問(wèn)題

    這篇文章主要介紹了Java中配置ElasticSearch集群環(huán)境賬號(hào)密碼的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • SpringBoot獲取Request請(qǐng)求的三種方式小結(jié)

    SpringBoot獲取Request請(qǐng)求的三種方式小結(jié)

    本文介紹了SpringBoot中獲取Request對(duì)象的三種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • mybatis?example如何自動(dòng)生成代碼?排序語(yǔ)句

    mybatis?example如何自動(dòng)生成代碼?排序語(yǔ)句

    這篇文章主要介紹了mybatis?example如何自動(dòng)生成代碼?排序語(yǔ)句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • logback之如何按日期和大小切分日志

    logback之如何按日期和大小切分日志

    這篇文章主要介紹了logback之如何按日期和大小切分日志問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 如何在Intellij中安裝LeetCode刷題插件方便Java刷題

    如何在Intellij中安裝LeetCode刷題插件方便Java刷題

    這篇文章主要介紹了如何在Intellij中安裝LeetCode刷題插件方便Java刷題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring?Boot項(xiàng)目抵御XSS攻擊實(shí)戰(zhàn)過(guò)程

    Spring?Boot項(xiàng)目抵御XSS攻擊實(shí)戰(zhàn)過(guò)程

    XSS攻擊又稱跨站腳本攻擊,通常指利用網(wǎng)頁(yè)開發(fā)時(shí)留下的漏洞,通過(guò)巧妙的方法注入惡意指令代碼到網(wǎng)頁(yè),使用戶加載并執(zhí)行攻擊者惡意制造的網(wǎng)頁(yè)程序,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目抵御XSS攻擊的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • java彩色瓷磚編程題分析

    java彩色瓷磚編程題分析

    這篇文章主要介紹了java彩色瓷磚編程題的詳細(xì)解題思路以及解決方法分享,對(duì)此有興趣的參考下。
    2018-02-02
  • SpringBoot多種生產(chǎn)打包方式詳解

    SpringBoot多種生產(chǎn)打包方式詳解

    生產(chǎn)上發(fā)布?Spring?Boot?項(xiàng)目時(shí),流程頗為繁瑣且低效,但凡代碼有一丁點(diǎn)改動(dòng),就得把整個(gè)項(xiàng)目重新打包部署,耗時(shí)費(fèi)力不說(shuō),生成的?JAR?包還特別臃腫,體積龐大,本文給大家介紹了SpringBoot多種生產(chǎn)打包方式,需要的朋友可以參考下
    2025-01-01
  • 完整java開發(fā)中JDBC連接數(shù)據(jù)庫(kù)代碼和步驟

    完整java開發(fā)中JDBC連接數(shù)據(jù)庫(kù)代碼和步驟

    這篇文章主要介紹了完整java開發(fā)中JDBC連接數(shù)據(jù)庫(kù)代碼和步驟,需要的朋友可以參考下
    2015-09-09
  • Java?Redisson多策略注解限流

    Java?Redisson多策略注解限流

    這篇文章主要介紹了Java?Redisson多策略注解限流,文章使用Redisson的RRateLimiter進(jìn)行限流,詳細(xì)介紹,感興趣的小伙伴可以參考下面文章內(nèi)容
    2022-09-09

最新評(píng)論