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

SpringBoot @SpringBootTest加速單元測試的小訣竅

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

@SpringBootTest加速單元測試小訣竅

Pre

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

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

在這里插入圖片描述

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

classes

在這里插入圖片描述

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

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

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

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

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

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

用法

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

webEnvironment

在這里插入圖片描述

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

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

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

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

用法

只需要通過指定

@SpringBootTest(webEnvironment =
SpringBootTest.WebEnvironment.NONE) 

即可達(dá)到加速的效果。這時(shí)測試類啟動時(shí)就只會初始化 Spring 上下文,不再啟動 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)行會報(bào)錯(cuò)

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

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

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

刪掉junit依賴

運(yùn)行成功!

運(yùn)行成功!

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

相關(guān)文章

  • Java中難理解的四個(gè)概念

    Java中難理解的四個(gè)概念

    這篇文章主要介紹了匿名內(nèi)部類、多線程、如何實(shí)現(xiàn)同步、序列化,這四個(gè)難理解的概念,同學(xué)們一定要仔細(xì)看看
    2021-04-04
  • IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn)

    IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn)

    本文主要介紹了IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn),通過簡單的步驟,您可以修改項(xiàng)目名稱并在打包時(shí)使用新的名稱,具有一定的參考價(jià)值,感興趣的可以了解下
    2023-08-08
  • javaGUI實(shí)現(xiàn)多人聊天功能

    javaGUI實(shí)現(xiàn)多人聊天功能

    這篇文章主要為大家詳細(xì)介紹了javaGUI實(shí)現(xiàn)多人聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 實(shí)例講解java的純數(shù)字加密解密

    實(shí)例講解java的純數(shù)字加密解密

    本文給大家分享的是一個(gè)java純數(shù)字加密解密技術(shù),加密和解密本身就是一對共生體,缺一不可,需要的朋友可以參考下
    2015-07-07
  • Java使用StampedLock實(shí)現(xiàn)高效讀寫功能

    Java使用StampedLock實(shí)現(xiàn)高效讀寫功能

    StampedLock 是 Java 8 引入的高性能鎖,提供了三種鎖模式:寫鎖、悲觀讀鎖和樂觀讀鎖,與傳統(tǒng)的 ReentrantReadWriteLock 相比,StampedLock 更注重性能,特別適合讀多寫少的場景,所以本文給大家介紹了Java使用StampedLock實(shí)現(xiàn)高效讀寫功能,需要的朋友可以參考下
    2025-01-01
  • Java基礎(chǔ)之finally語句與return語句詳解

    Java基礎(chǔ)之finally語句與return語句詳解

    這篇文章主要介紹了Java基礎(chǔ)之finally語句與return語句詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • springboot?去掉netflix?禁用Eureka的解決方法

    springboot?去掉netflix?禁用Eureka的解決方法

    這篇文章主要介紹了springboot?去掉netflix?禁用Eureka的解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java+Nginx實(shí)現(xiàn)POP、IMAP、SMTP郵箱代理服務(wù)

    Java+Nginx實(shí)現(xiàn)POP、IMAP、SMTP郵箱代理服務(wù)

    本篇文章的內(nèi)容是介紹Java+Nginx如何實(shí)現(xiàn)POP、IMAP、SMTP郵箱代理服務(wù),步驟詳細(xì),思路清新,需要的朋友可以參考下
    2015-07-07
  • Java基礎(chǔ)知識精通數(shù)組的內(nèi)存分析

    Java基礎(chǔ)知識精通數(shù)組的內(nèi)存分析

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語言對數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-04-04
  • java8 stream自定義分組求和并排序的實(shí)現(xiàn)

    java8 stream自定義分組求和并排序的實(shí)現(xiàn)

    這篇文章主要介紹了java8 stream自定義分組求和并排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評論

南澳县| 昌宁县| 嘉黎县| 凤凰县| 镶黄旗| 嘉禾县| 微山县| 金寨县| 乐至县| 介休市| 周至县| 泾源县| 漳平市| 搜索| 临清市| 重庆市| 鄂伦春自治旗| 名山县| 彩票| 梓潼县| 常德市| 巴东县| 酉阳| 阿拉善左旗| 万年县| 五大连池市| 澄城县| 宾阳县| 思南县| 闵行区| 北川| 石门县| 鲁山县| 都匀市| 盐边县| 台南县| 巴马| 万山特区| 平山县| 香河县| 赞皇县|