WebMvcTest與SpringBootTest

@SpringBootTest

@SpringBootTest註解告訴SpringBoot去尋找一個主配置類(例如帶有@SpringBootApplication的配置類),並使用它來啓動Spring應用程序上下文。SpringBootTest加載完整的應用程序並注入全部可能的bean,所以速度會很慢。bash

在這種狀況下,不須要建立 MockMvc bean,能夠直接經過RestTemplate進行請求測試(或者使用TestRestTemplate)。服務器

@WebMvcTest

@WebMvcTest註解主要用於controller層測試,只覆蓋應用程序的controller層,HTTP請求和響應是Mock出來的,所以不會建立真正的鏈接。所以須要建立 MockMvc bean進行模擬接口調用。測試

若是Controller層對Service層中的其餘bean有依賴關係,那麼須要使用Mock提供所需的依賴項。spa

WebMvcTest要快得多,由於咱們只加載了應用程序的一小部分。code

Slice 註解

有時,咱們僅但願測試應用程序的一個簡單片斷(Slice),而不是自動配置整個應用程序。Spring Boot 1.4引入了4個新的測試註釋:接口

@WebMvcTest - for testing the controller layer
@JsonTest - for testing the JSON marshalling and unmarshalling
@DataJpaTest - for testing the repository layer
@RestClientTests - for testing REST clients
複製代碼

使用場景

@WebMvcTest用於從服務器端對Controller層進行統一測試;若是須要從客戶端與應用程序交互時,應該使用@SpringBootTest作集成測試。it

相關文章
相關標籤/搜索