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

SpringBoot @SpringBootTest加速單元測(cè)試的小訣竅

 更新時(shí)間:2021年11月04日 09:08:33   作者:小小工匠  
這篇文章主要介紹了SpringBoot @SpringBootTest加速單元測(cè)試的小訣竅,具有很好的參考價(jià)值,對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@SpringBootTest加速單元測(cè)試小訣竅

Pre

SpringBoot - 應(yīng)用程序測(cè)試方案

隨著代碼量的爭(zhēng)奪,測(cè)試類的啟動(dòng)速度變得越來越慢,而大多數(shù)情況下只是為了測(cè)試一下某個(gè)實(shí)現(xiàn)類的某個(gè)方法而已,比如測(cè)試一個(gè)DAO層的方法,卻要啟動(dòng)這個(gè)應(yīng)用。

在這里插入圖片描述

今天我們繼續(xù)深入了解一下 稍微高級(jí)一點(diǎn)的用法

classes

在這里插入圖片描述

classes 屬性用來指定運(yùn)行測(cè)試類需要裝載的 class 集合,如果不指定,那么會(huì)默認(rèn)裝載 @SpringBootConfiguration 注解標(biāo)注的類

如果不指定classes屬性,那么啟動(dòng)測(cè)試類時(shí)需要加載的Bean的數(shù)量和正常啟動(dòng)一次入口類加載的 Bean 數(shù)量是一樣的。

如果你的項(xiàng)目中有很多個(gè) Bean, 特別是有以下幾種時(shí):

  • 有 CommandLineRunner 的實(shí)現(xiàn)類
  • 用 @PostConstruct 注解指定了初始化方法的類

這幾種類在程序初始化的過程中都會(huì)運(yùn)行自身的業(yè)務(wù)代碼或者初始化代碼,從而延后了測(cè)試方法的運(yùn)行。

在這種情況下,我們?cè)诰帉憸y(cè)試類的時(shí)候,如果明確這個(gè)測(cè)試類會(huì)用到哪幾個(gè) Bean,則可以在 classes 屬性處指定,之后啟動(dòng)測(cè)試類的時(shí)候,就只會(huì)加載需要的 Bean 到上下文中,從而加快啟動(dòng)速度。比如:

用法

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes={ArtisanServiceImpl.class})

webEnvironment

在這里插入圖片描述

這個(gè)屬性的含義是說測(cè)試類要不要啟動(dòng)一個(gè) web 環(huán)境, 要不要啟動(dòng)一個(gè) Tomcat 容器,可選的值為:

  • MOCK:?jiǎn)?dòng)一個(gè)模擬的 Servlet 環(huán)境, 默認(rèn)值。
  • RANDOM_PORT:?jiǎn)?dòng)一個(gè) Tomcat 容器,并監(jiān)聽一個(gè)隨機(jī)的端口號(hào)
  • DEFINED_PORT:?jiǎn)?dòng)一個(gè) Tomcat 容器,并監(jiān)聽配置文件中定義的端口(未定義則默認(rèn)監(jiān)聽8080)
  • NONE:不啟動(dòng) Tomcat 容器

怎么使用呢? 舉個(gè)例子 如果你要測(cè)試的方法不需要用到 Tomcat 容器,比如:

  • 測(cè)試 DAO 類的CRUD
  • 測(cè)試Service 類的業(yè)務(wù)方法
  • 測(cè)試工具類的公用方法
  • 測(cè)試配置文件類是否讀取到了正確的值

用法

只需要通過指定

@SpringBootTest(webEnvironment =
SpringBootTest.WebEnvironment.NONE) 

即可達(dá)到加速的效果。這時(shí)測(cè)試類啟動(dòng)時(shí)就只會(huì)初始化 Spring 上下文,不再啟動(dòng) Tomcat 容器了:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class ArtisanServiceTests {
    @Autowired
    private IArtisanSerive artisanService;
    @Test
    public void test() {
        // ...
    }
}

@記錄使用SpringBootTest遇到的坑

不要導(dǎo)入junit這個(gè)依賴,只要上面那個(gè)test就行了

導(dǎo)入junit依賴,運(yùn)行會(huì)報(bào)錯(cuò)

導(dǎo)入junit,這里會(huì)紅。運(yùn)行測(cè)試方法會(huì)報(bào)錯(cuò)

這里變紅了,只需要spring-boot-starter-test依賴就好

只留下這個(gè)依賴就行了

刪掉junit依賴

運(yùn)行成功!

運(yùn)行成功!

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

相關(guān)文章

  • feign 調(diào)用第三方服務(wù)中部分特殊符號(hào)未轉(zhuǎn)義問題

    feign 調(diào)用第三方服務(wù)中部分特殊符號(hào)未轉(zhuǎn)義問題

    這篇文章主要介紹了feign 調(diào)用第三方服務(wù)中部分特殊符號(hào)未轉(zhuǎn)義問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot項(xiàng)目打成War布署在Tomcat的詳細(xì)步驟

    SpringBoot項(xiàng)目打成War布署在Tomcat的詳細(xì)步驟

    這篇文章主要介紹了SpringBoot項(xiàng)目打成War布署在Tomcat,本文分步驟結(jié)合圖文實(shí)例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java實(shí)現(xiàn)數(shù)字連連消

    Java實(shí)現(xiàn)數(shù)字連連消

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)數(shù)字連連消,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • JAVA流控及超流控后的延遲處理實(shí)例

    JAVA流控及超流控后的延遲處理實(shí)例

    這篇文章主要介紹了JAVA流控及超流控后的延遲處理,以實(shí)例形式較為詳細(xì)的分析了Java進(jìn)行流量控制的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • java如何連續(xù)執(zhí)行多條cmd命令

    java如何連續(xù)執(zhí)行多條cmd命令

    這篇文章主要介紹了java如何連續(xù)執(zhí)行多條cmd命令的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 初學(xué)者Android studio安裝圖文詳解

    初學(xué)者Android studio安裝圖文詳解

    本文給大家分享android studio 安裝圖文詳解包括下載安裝及遇到的問題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • idea新建mapper.xml文件詳細(xì)步驟如:mybatis-config

    idea新建mapper.xml文件詳細(xì)步驟如:mybatis-config

    這篇文章主要介紹了idea新建xml模板設(shè)置,例如:mybatis-config,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • MybatisPlus之likeRight的用法

    MybatisPlus之likeRight的用法

    這篇文章主要介紹了MybatisPlus之likeRight的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Scala數(shù)據(jù)庫(kù)連接池的簡(jiǎn)單實(shí)現(xiàn)

    Scala數(shù)據(jù)庫(kù)連接池的簡(jiǎn)單實(shí)現(xiàn)

    本文主要介紹了Scala數(shù)據(jù)庫(kù)連接池的簡(jiǎn)單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Spring注解實(shí)現(xiàn)循環(huán)重試功能(適用場(chǎng)景分析)

    Spring注解實(shí)現(xiàn)循環(huán)重試功能(適用場(chǎng)景分析)

    這篇文章主要介紹了Spring注解實(shí)現(xiàn)循環(huán)重試功能,本篇主要簡(jiǎn)單介紹了Springboot中的Retryable的使用,主要的適用場(chǎng)景和注意事項(xiàng),當(dāng)需要重試的時(shí)候還是很有用的,需要的朋友可以參考下
    2023-04-04

最新評(píng)論