如何使用 JUnit 自動化測試mvc接口(model)

如何使用 JUnit 自動化測試mvc接口(model)

一般正常的 restful 接口我們可以很方便的寫出測試用例, 但是遇到有 ModelController 方法就比較難過了, 我之前找了很多方法(方向是如何構造Model), 但是都沒找到解決方案, 知道我偶然發現 MockMvc 這個東西, 於是就有了解決方案, 本文就講解如何使用 Junit 進行mvc 接口的測試

JUnit: 個迴歸測試框架, 方便我們對代碼進行測試, 特別是在重構(修改)後驗證代碼的功能邏輯是否依然正確, 被開發者用於實施對應用程序的單元測試, 加快程序編制速度,同時提高編碼的質量
如果還不知道什麼是 JUnit 請移步

簡單講解

難點就在與這個 Model 對象的構造, 無法使用 Spring 的自動注入來初始化 Model, 使用 new 也不現實(這個是個接口), 所以對於這種 controller 方法要麼就只測試內部的 service 邏輯, 要麼就改寫一下改成無 Model 參數的(破壞代碼結構, 不優雅), 現在有了 MockMvc 就能自動幫我們解決這個 Model 的問題, 而且還能將生成的視圖輸出到 console

我們要做的就是在單元測試調用 controller 方法錢將 MockMvc 構造出來, 然後利用 MockMvc 內部的方法進行 controller 方法的調用

關鍵源碼

引入部分

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;

代碼部分

  • @Before: 測試前需要自動執行的註解(方法上)
  • MockMvc: 我們需要用到的模擬 MVC 對象
private MockMvc mockMvc;

@Before
public void setup() {
    // webAppContextSetup 注意上面的static import
    // webAppContextSetup 構造的WEB容器可以添加fileter 但是不能添加listenCLASS
    // WebApplicationContext context =
    // ContextLoader.getCurrentWebApplicationContext();
    // 如果控制器包含如上方法 則會報空指針
    this.mockMvc = webAppContextSetup(this.wac).build();
}

接口調用寫法

mockMvc.perform((get("/要測試的接口地址"))).andExpect(status().isOk()).andDo(print());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章