本文為博主原創,未經允許不得轉載:
MockMvc實現了對Http請求的模擬,能夠直接使用網絡的形式,轉換到Controller的調用,這樣可以使得測試速度快、不依賴網絡環境,
而且提供了一套驗證的工具,這樣可以使得請求的驗證統一而且很方便。
MockMvc用到的注解 :
@RunWith(SpringJUnit4ClassRunner.class): 表示使用Spring Test組件進行單元測試;
@ContextConfiguration: 配置文件路徑,用於加載和初始化spring 環境,
如果有多個配置文件,可以將括號中的信息配置為一個字符串數組來表示;
---也可通過注解進行事務配置//配置事務的回滾,對數據庫的增刪改都會回滾,便於測試用例的循環利用
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
以下為項目中用到的MockMvc進行單元測試的方法,
---spring-dal-test.xml該文件為數據庫配置bean的配置以及事務回滾配置的文件
---spring-service-test.xml該文件為項目中依賴的資源配置初始化加載文件
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:conf/spring/spring-dal-test.xml", "classpath:conf/spring/spring-service-test.xml" }) public class AdminUserManageControllerTest { @Autowired private AdminUserManageController adminUserManageController; private MockMvc mockMvc; @Before public void setup() { // 初始化構建 mockMvc = MockMvcBuilders.standaloneSetup(adminUserManageController).build(); } @Test public void queryAdminUserByPageTest001() throws Exception { // 分頁查詢用戶信息 mockMvc.perform( //執行一個RequestBuilder請求,會自動執行SpringMVC的流程並映射到相應的控制器執行處理; post("/adminUserManage/queryAdminUserByPage") //模擬請求的url,及請求的方法是post .content("{\"pageNum\":1,\"pageSize\":20}")) //請求的參數體 .andExpect( status().isOk() //預期返回的狀態碼是200 ) .andReturn().getResponse().getContentAsString(); //將相應的數據轉換為字符串 } }
常用方法總結: