一、API的單元測試
1.首先創建test類,上一篇博客講的是手動創建,這裏講自動創建
1)在需要創建單元測試的controller上右擊選——>go to——>test
2)選create
3)選擇需要單元測試的方法,我這裏就一個
4)創建成功
2.添加註入的信息和填充方法,如下
packagecom.example.demo.controller;
importorg.junit.Test;
importorg.junit.runner.RunWith;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
importorg.springframework.boot.test.context.SpringBootTest;
importorg.springframework.test.context.junit4.SpringRunner;
importorg.springframework.test.web.servlet.MockMvc;
importorg.springframework.test.web.servlet.request.MockMvcRequestBuilders;
importorg.springframework.test.web.servlet.result.MockMvcResultHandlers;
importorg.springframework.test.web.servlet.result.MockMvcResultMatchers;
import staticorg.junit.Assert.*;
@RunWith(SpringRunner.class)//表明要在測試環境跑了,底層使用的junit測試工具
@SpringBootTest
@AutoConfigureMockMvc
public classUserControllerTest {
//引入MockMvc
@Autowired
privateMockMvcmvc;
@Test
public voidassetsSummary()throwsException {
mvc.perform(MockMvcRequestBuilders.get("/login"))
.andExpect(MockMvcResultMatchers.status().isOk());
}
}
解釋:
@AutoConfigureMockMvc啓動的時候自動注入MockMvc
MockMvc的一些屬性如下:
perform:執行一個RequestBuilder請求,會自動執行SpringMVC的流程並映射到相應的控制器執行處理;
andExpect:添加ResultMatcher驗證規則,驗證控制器執行完成後結果是否正確;
andDo:添加ResultHandler結果處理器,比如調試時打印結果到控制檯;
andReturn:最後返回相應的MvcResult;然後進行自定義驗證/進行下一步的異步處理;
擴展:具體詳細屬性可參考:
http://www.cnblogs.com/lyy-2016/p/6122144.html
添加一些屬性執行結果如下:
3.run的正確結果
4.更改url,繼續run,錯誤結果
404,不存在該地址
二、pakage或者install時,單元測試的執行順序
1)單元測試通過,才能pakage或install成功
執行命令mvn install或mvn pakage,生成可執行jar包時會進行單元測試
先執行單元測試,單元測試通過
BUILD SUCCESS
2)修改UserControllerTest中需要測試的url的路徑
若單元測試不通過,install不成功
注意:mvn compile編譯的時候不會執行單元測試,大家可以試驗一下
三、總結
單元測試雖然容易掌握,但是誰又能對自己所寫的接口在發佈之前全部通過單元測試呢?單元測試,是開發者的一個基本素質,關於他的使用,還需要好好好思考一下。