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

SpringBoot中@Test的介紹和使用案例

 更新時(shí)間:2023年08月21日 10:53:55   作者:fking86  
SpringBoot提供了方便的測(cè)試功能,可以很容易地進(jìn)行單元測(cè)試和集成測(cè)試,這篇文章主要介紹了SpringBoot中@Test的介紹和使用,需要的朋友可以參考下

SpringBoot Test介紹

SpringBoot提供了方便的測(cè)試功能,可以很容易地進(jìn)行單元測(cè)試和集成測(cè)試。主要包含以下幾點(diǎn):

  • Spring Boot提供了@SpringBootTest注解,可以用來啟動(dòng)Spring Boot應(yīng)用,進(jìn)行集成測(cè)試。
  • Spring Boot提供了@MockBean注解,可以用來 Mock Bean。
  • Spring Boot提供了@SpyBean注解,可以用來 Spy Bean。
  • Spring Boot提供了@SpringBootConfiguration注解,可以用來聲明配置類。
  • Spring Boot提供了AssertJ的支持,可以用來進(jìn)行斷言。
  • Spring Boot提供了測(cè)試相關(guān)的工具類,如TestRestTemplate等。
  • SpringBoot提供了@LocalServerPort可以非常方便的模擬客戶端,對(duì)運(yùn)行的服務(wù)進(jìn)行端到端集成測(cè)試
  • SpringBoot提供了自動(dòng)配置MockMvc,方便在測(cè)試類中直接注入并使用MockMvc

依賴

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>

常用注解

@SpringBootTest

這個(gè)注解用來進(jìn)行集成測(cè)試,會(huì)啟動(dòng)整個(gè)Spring Boot應(yīng)用,進(jìn)行端到端測(cè)試。

用法:

@SpringBootTest
public class MyTest {
  // 測(cè)試方法
}

可以通過webEnvironment參數(shù)來指定測(cè)試環(huán)境:

  • MOCK:加載Web Application Context,不啟動(dòng)Servlet容器。
  • RANDOM_PORT:加載Servlet容器,使用隨機(jī)端口。
  • DEFINED_PORT:加載Servlet容器,使用定義好的端口。
  • NONE:加載Web Application Context,但是不啟動(dòng)Servlet容器。

@WebMvcTest

這個(gè)注解用來測(cè)試Web層,會(huì)自動(dòng)注入Web層的Bean,不會(huì)啟動(dòng)整個(gè)Spring Boot應(yīng)用。

用法:

@WebMvcTest(UserController.class)
public class MyTest {
  @Autowired
  private MockMvc mvc;
  // 測(cè)試方法
}

@DataJpaTest

這個(gè)注解用來測(cè)試JPA相關(guān)的Bean,會(huì)自動(dòng)配置Spring Data JPA相關(guān)的Bean。

用法:

code@DataJpaTest
public class MyTest {
  @Autowired
  private TestEntityManager entityManager;
  @Autowired
  private UserRepository userRepository;
  // 測(cè)試方法
}

@MockBean

這個(gè)注解用來Mock一個(gè)Bean,注入測(cè)試類中,用來Isolation測(cè)試。

用法:

@SpringBootTest
public class MyTest {
  @MockBean
  private UserService userService;
  // 測(cè)試方法
}

@SpyBean

這個(gè)注解用來Spy一個(gè)Bean,注入測(cè)試類中,不影響真正的Bean。

用法:

@SpringBootTest
public class MyTest {
  @MockBean
  private UserService userService;
  // 測(cè)試方法
}

@SpringBootConfiguration

這個(gè)注解用來聲明配置類,相當(dāng)于@Configuration。

用法:

@SpringBootConfiguration
public class MyConfig {
  // 配置代碼
}

可以用在測(cè)試類中加載額外的配置類。

@LocalServerPort

這個(gè)是一個(gè)非常有用的注解,它可以為測(cè)試獲取啟動(dòng)的嵌入式服務(wù)器實(shí)例的實(shí)際端口號(hào)。

主要作用和用法如下:

自動(dòng)注入啟動(dòng)的服務(wù)器端口號(hào)

在測(cè)試類中,可以像下面這樣使用@LocalServerPort注解:

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class MyTest {
  @LocalServerPort
  private int port;
  // 測(cè)試方法可以使用port變量
}

這樣就可以拿到隨機(jī)分配的端口號(hào)。

結(jié)合@Value使用

@LocalServerPort也可以和@Value結(jié)合使用:

@Value("${local.server.port}")
private int port;

測(cè)試端點(diǎn)

有了端口號(hào),可以通過測(cè)試端點(diǎn)進(jìn)行驗(yàn)證:

@Autowired
private TestRestTemplate restTemplate;
@Test
public void test() {
  String body = this.restTemplate.getForObject("http://localhost:" + port + "/hello", String.class);
  assertEquals("Hello World", body);
}

模擬客戶端

使用@LocalServerPort可以非常方便的模擬客戶端,對(duì)運(yùn)行的服務(wù)進(jìn)行端到端集成測(cè)試。

@AutoConfigureMockMvc

這個(gè)是Spring Boot提供的一個(gè)便捷的注解,可以用來自動(dòng)配置MockMvc,方便在測(cè)試類中直接注入并使用MockMvc。

主要作用如下:

自動(dòng)注入MockMvc

在測(cè)試類中,可以直接注入MockMvc:

@Autowired
private MockMvc mvc;

不需要自己配置MockMvc。

結(jié)合@WebMvcTest使用

@AutoConfigureMockMvc經(jīng)常和@WebMvcTest一起使用,對(duì)控制器進(jìn)行單元測(cè)試:

@WebMvcTest
@AutoConfigureMockMvc
public class TestController {
  @Autowired
  private MockMvc mvc;
  @MockBean
  private UserService userService;
  @Test
  public void test() throws Exception {
    // 使用MockMvc進(jìn)行請(qǐng)求測(cè)試
  }
}

模擬HTTP請(qǐng)求

有了MockMvc,可以輕松模擬各種HTTP請(qǐng)求來測(cè)試控制器:

// GET
mvc.perform(get("/users"))
  .andExpect(status().isOk()); 
// POST  
mvc.perform(post("/users"))
  .andExpect(status().isCreated());
// 模擬參數(shù)
mvc.perform(get("/users").param("name", "test"))
  .andExpect(content().string(containsString("test")));

驗(yàn)證響應(yīng)

可以通過MockMvc對(duì)響應(yīng)結(jié)果進(jìn)行驗(yàn)證:

mvc.perform(get("/users/1"))
  .andExpect(status().isOk())
  .andExpect(content().contentType(MediaType.APPLICATION_JSON)) 
  .andExpect(jsonPath("$.name").value("Test User")); 

總之,@AutoConfigureMockMvc可以靈活地模擬HTTP請(qǐng)求,并驗(yàn)證響應(yīng),使得測(cè)試Web層變得非常方便。它通常與@WebMvcTest注解配合使用,為 Spring Boot的測(cè)試提供了很大的便利。

到此這篇關(guān)于SpringBoot中@Test的介紹和使用的文章就介紹到這了,更多相關(guān)SpringBoot @Test使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IDEA項(xiàng)目打包的幾種方式總結(jié)

    IDEA項(xiàng)目打包的幾種方式總結(jié)

    這篇文章主要介紹了IDEA項(xiàng)目打包的幾種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MyBatis-Plus多數(shù)據(jù)源配置與讀寫分離全過程

    MyBatis-Plus多數(shù)據(jù)源配置與讀寫分離全過程

    文章介紹了如何在SpringBoot中使用MyBatis-Plus實(shí)現(xiàn)多數(shù)據(jù)庫操作,包括純粹多庫和讀寫分離的配置方法,重點(diǎn)演示了多數(shù)據(jù)源的設(shè)置與使用
    2025-09-09
  • Swagger及knife4j的基本使用詳解

    Swagger及knife4j的基本使用詳解

    Swagger是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化RESTful風(fēng)格的?Web?服務(wù),這篇文章主要介紹了Swagger以及knife4j的基本使用,需要的朋友可以參考下
    2022-08-08
  • java Unicode和UTF-8之間轉(zhuǎn)換實(shí)例

    java Unicode和UTF-8之間轉(zhuǎn)換實(shí)例

    這篇文章主要介紹了java Unicode和UTF-8之間轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • java springmvc 注冊(cè)中央調(diào)度器代碼解析

    java springmvc 注冊(cè)中央調(diào)度器代碼解析

    這篇文章主要介紹了java springmvc 注冊(cè)中央調(diào)度器代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Springboot啟動(dòng)原理詳細(xì)講解

    Springboot啟動(dòng)原理詳細(xì)講解

    這篇文章主要介紹了SpringBoot啟動(dòng)原理的分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Springboot 在普通類型注入Service或mapper

    Springboot 在普通類型注入Service或mapper

    這篇文章主要介紹了Springboot 在普通類型注入Service或mapper,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java常用類之System類的使用指南

    Java常用類之System類的使用指南

    System類代表系統(tǒng),系統(tǒng)級(jí)的很多屬性和控制方法都放置在該類的內(nèi)部。該類位于java.lang包。本文將通過示例為大家詳細(xì)講講System類的使用,需要的可以參考一下
    2022-07-07
  • 詳解Java Optional正確使用方式和優(yōu)勢(shì)(避免空指針異常)

    詳解Java Optional正確使用方式和優(yōu)勢(shì)(避免空指針異常)

    作為一個(gè) Java 后端開發(fā)者,NullPointerException(空指針異常)幾乎是我們寫代碼時(shí)最常見、最難纏的 Bug 之一,下面我們就來聊聊如何正確使用Optional以避免空指針異常吧
    2025-07-07
  • Java 日期格式加上指定月數(shù)(一個(gè)期限)得到一個(gè)新日期的實(shí)現(xiàn)代碼

    Java 日期格式加上指定月數(shù)(一個(gè)期限)得到一個(gè)新日期的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java 日期格式加上指定月數(shù)(一個(gè)期限)得到一個(gè)新日期的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-05-05

最新評(píng)論

伊川县| 德兴市| 永春县| 济源市| 泾阳县| 灌阳县| 连江县| 宣化县| 内黄县| 东安县| 泾源县| 靖西县| 温宿县| 四子王旗| 南川市| 六枝特区| 北流市| 石棉县| 蕉岭县| 大洼县| 浠水县| 铜梁县| 罗江县| 东安县| 河北区| 麟游县| 名山县| 许昌市| 谷城县| 浦江县| 旬阳县| 罗山县| 方正县| 花莲市| 丹江口市| 张家口市| 郸城县| 华亭县| 友谊县| 石泉县| 凤凰县|