起首需要引入spring-boot-starter-test,會幫我們把測試框架引入進來。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
起首我們建立一個測試類UserControllerTest,然后加上@RunWith(SpringRunner.class和@SpringBootTest的注解。接下來我們經由過程@Autowired
private WebApplicationContext wac來偽造web情況。
然后利用@Before注解來初始化mockMvc,@Before注解會在每個測試用例挪用之前執行。
@Before
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
接下來我們寫一個查詢請求的測試方式,在該方式上添加@Test注解,利用MockMvcRequestBuilders.get()去模擬一個Get請求,MediaType.APPLICATION_JSON_UTF8指定媒體類型,MockMvcResultMatchers.status().isOk()暗示成果,如下所示。
@Test
public void testQuery() throws Exception {
// 模擬一個Get請求
mockMvc.perform(MockMvcRequestBuilders.get("/user")
// 媒體類型
.contentType(MediaType.APPLICATION_JSON_UTF8))
// 對請求成果的期望
.andExpect(MockMvcResultMatchers.status().isOk())
// 期望返回的是一個調集,調集的長度是3
.andExpect(MockMvcResultMatchers
.jsonPath("$.length()")
.value(3));
}
我們執行該單位測試,可是測試沒有經由過程,原因是因為我們期望的返回碼是200,可是現實返回的是404,是因為我們還沒有編寫一個/user的請求。
新增一個/user請求的類,返回值為null如下圖所示,執行單位測試后固然不報404的錯誤了,可是測試依舊不經由過程,因為期望的返回值不克不及是null,是以我們在編寫代碼的時辰還要給一個切當的返回值,我們返回有三個對象的list,可以看到經由過程了單位測試。
若是想在單位測試中添加參數,利用.param()進行參數傳遞,響應的方式中利用@RequestParam注解傳遞參數。
若是想添加分頁參數到單位測試中,我們在方式中利用Pageable去領受參數,利用@PageableDefault()注解給分頁添加默認值。
END0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!