spring在線文檔:https://docs.spring.io/spring/docs/current/javadoc-api/index.html?index-files/index-13.html
----------------------------------------------------------------------------------------------------------------
一、應用示例
package com.springapp.mvc; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.web.context.WebApplicationContext; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 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.result.MockMvcResultMatchers.view; import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration("file:src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml") public class AppTests { private MockMvc mockMvc; @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired protected WebApplicationContext wac; @Before public void setup() { this.mockMvc = webAppContextSetup(this.wac).build();//獲取mockMvc實例 } @Test public void simple() throws Exception { mockMvc.perform(post("/mytest"))//執行一個RequestBuilder請求 .andExpect(view().name("index2"))//驗證返回視圖是否是"index2" .andDo(print()).andExpect(status().isOk());//打印結果到控制台 } }
二、代碼解釋
@WebAppConfiguration
@WebAppConfiguration
is a class-level annotation that is used to declare that the ApplicationContext
loaded for an integration test should be a WebApplicationContext
.
其中文意思是:“@webappconfiguration是一級注釋,用於聲明一個ApplicationContext集成測試加載WebApplicationContext。”
private MockMvc mockMvc;
Main entry point for server-side Spring MVC test support.
其中文意思是:對於服務器端的Spring MVC測試支持主入口點。
該對象可以由方法webAppContextSetup(WebApplicationContext context).build()構造。
org.springframework.test.web.servlet.setup.MockMvcBuilders
先介紹些:MockMvcBuilder,MockMvcBuilder是用來構造MockMvc的構造器,其主要有兩個實現:StandaloneMockMvcBuilder和DefaultMockMvcBuilder,分別對應之前的兩種測試方式。對於我們來說直接使用靜態工廠MockMvcBuilders創建即可(注:MockMvcBuilders在官方文檔中並未找到):
MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,將會從該上下文獲取相應的控制器並得到相應的MockMvc;
MockMvcBuilders.standaloneSetup(Object... controllers):通過參數指定一組控制器,這樣就不需要從上下文獲取了。
simple方法中的代碼中的方法:
perform:執行一個RequestBuilder請求,會自動執行SpringMVC的流程並映射到相應的控制器執行處理;
andExpect:添加ResultMatcher驗證規則,驗證控制器執行完成后結果是否正確;
andDo:添加ResultHandler結果處理器,比如調試時打印結果到控制台;
后記:更多參加spring的官方文檔
附:另一種測試
package com.spring.test; import com.wql.dao.UserMapper; import com.wql.vo.User; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; /** * Created by Administrator on 15-12-11. */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring.xml") public class SqlTests { @Resource private UserMapper userMapper; @Test public void test(){ User u = userMapper.selectByPrimaryKey(1); System.out.println(u); } @Test public void test2(){ User u = new User(); u.setName("wang"); u.setPassword("112"); System.out.println(userMapper.checkLogin(u)); } }