架構師基於微服務的專案使用 MockMvc完成SpringBoot2.x單元測試
使用 MockMvc完成SpringBoot2.x單元測試
1、單元測試
開發過程中單元測試是必不可少的,我們更要養成隨手寫配套測試用例的習慣這些隨手寫好的測試用例在前後端分離的微服務架構下對後期需求變動專案元件重構起到了重要的作用,尤其是現在比較流行的敏捷開發、測試驅動等領域。
2、依賴引入
(1)首先,在Spring boot工程目錄下會有/src/test/java的預設路徑,供我們存放測試類
找見預設路徑
(2)Spring boot 2.x的腳手架也給我們提供了一個簡單的測試樣例
我們在SpringMVC寫測試用例的時候,需要通過註解引入一些Spring配置檔案
如:
@ContextConfiguration(locations = {"classpath:applicationContext.xml","classpath:applicationContext.mvc.xml"})
在Spring boot的測試中如果我們只做簡單的Get和Post測試
在Spring boot中測試web應用我們只需要一行註解即可引入web上下文
@Autowired
private WebApplicationContext context;
3、測試類位置
之前我們已經寫過一個Api介面UserRestfulController了,在對這個controller編寫測試用例前,我們先新建一個測試類
新建測試類
4、MockMvc
使用MockMvc,我們可以完成基於RESTful風格的SpringMVC的測試,我們可以測試完整的Spring MVC流程,即從URL請求到控制器處理,再到檢視渲染都可以測試。
4.1 在Junit中初始化 MockMvc
@Before
public void init()throws Exception {
mvc = MockMvcBuilders.webAppContextSetup(context).build();
initData();
}
4.2 資料初始化
為了方便單點演示,我們還是使用記憶體中的資料完成測試,而沒有連線資料庫、快取等資料來源。
public void initData() throws Exception{
mvc.perform(
(MockMvcRequestBuilders.post("/User")
.param("id", "100")
.param("loginName", "yoyo")
.param("password", "123")
.param("nickName", "heihei")
)
.accept(MediaType.APPLICATION_FORM_URLENCODED))
.andExpect(status().isOk())
.andDo(print());
}
4.3 測試介面返回值是否匹配
@Test
public void testEqualTo()throws Exception {
// 測試返回值是否匹配 使用equalTo()
mvc.perform(MockMvcRequestBuilders.get("/User/ServerStatus")
.accept(MediaType.TEXT_HTML))
.andExpect(status().isOk())
.andExpect(content().string(equalTo(("ok1")))) ;
}
4.4 列印介面返回值
@Test
public void testUserList()throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/User")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print());
}
java+架構師+大資料+人工智慧+Python+區塊鏈 全階段視訊資料已經整理好了,需要的可以評論或者私信,希望給你學習帶來幫你!給自己指明一個方向!