日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot单元测试的@RunWith与@SpringBootTest注解

發布時間:2024/3/13 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot单元测试的@RunWith与@SpringBootTest注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SpringBoot測試類注解示例:

import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest;@RunWith(SpringRunner.class) @SpringBootTest(classes = GeneratorApp.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class UserTest { }

1. @RunWith(SpringRunner.class)

目的: 為了讓測試在Spring容器環境下執行。

@RunWith是JUnit的一個注解, 用來告訴JUnit不要使用內置的方式進行單元測試, 而應該使用指定的類做單元測試 對于Spring單元測試總是要使用 SpringRunner.class。

@RunWith 就是一個運行器,Test測試類需要使用Spring注入的類,例如@Autowired注入的類,使用@RunWith(SpringRunner.class)注解,注入的類才能實例化到Spring容器中,自動注入方能生效,否則會返回NullPointerExecption。

2. @SpringBootTest

目的: 加載ApplicationContext,啟動spring容器。

@SpringBootTest注解是SpringBoot自1.4.0版本開始引入的一個用于測試的注解。

@SpringBootTest的classes 屬性指向一個啟動類或配置啟動類

注:

  • @SpringBootTest會自動檢索程序的配置文件,無需顯式指定classes屬性;
  • 檢索順序是從當前包開始,逐級向上查找被@SpringBootApplication或@SpringBootConfiguration注解的類。
  • SpringBootTest.WebEnvironment.RANDOM_PORT啟動一個真實的web服務,會隨機生成一個端口號。

    一 般情況下,使用@SpringBootTest后,Spring將加載所有被管理的bean,基本等同于啟動了整個服務,此時便可以開始功能測試。
    由于web服務是最常見的服務,且我們對于web服務的測試有一些特殊的期望,所以@SpringBootTest注解中,給出了webEnvironment參數指定了web的environment,該參數的值一共有四個可選值:

    • MOCK:此值為默認值,該類型提供一個mock環境,可以和@AutoConfigureMockMvc或@AutoConfigureWebTestClient搭配使用,開啟Mock相關的功能。注意此時內嵌的服務(servlet容器)并沒有真正啟動,也不會監聽web服務端口。
    • RANDOM_PORT:啟動一個真實的web服務,監聽一個隨機端口。
    • DEFINED_PORT:啟動一個真實的web服務,監聽一個定義好的端口(從application.properties讀取)。
    • NONE:啟動一個非web的ApplicationContext,既不提供mock環境,也不提供真實的web服務。

    注:如果當前服務的classpath中沒有包含web相關的依賴,spring將啟動一個非web的ApplicationContext,此時的webEnvironment就沒有什么意義了。

    其他拓展:

  • @SpringBootTest 用來指定SpringBoot應用程序的入口類, 該注解默認會根據包名逐級往上找, 一直找到一個SpringBoot主程序class為止, 然后啟動該類為單元測試準備Spring上下文環境. Spring單元測試并不在每個測試方法前都移動一個全新的Spring上下文, 因為這樣做太耗費時間, 而是會緩存上下文環境. 如果某個測試方法需要重新準備Spring上下文, 需要在該方法上加 @DirtiesContext 注解。
  • 以Test結尾的注解,具有加載applicationContext的能力。
  • 引用文章:http://ypk1226.com/2018/11/20/spring-boot/spring-boot-test-2/

    總結

    以上是生活随笔為你收集整理的SpringBoot单元测试的@RunWith与@SpringBootTest注解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。