SpringMVC Junit Demo
package com.zchx.test; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.mock.web.MockHttpSession; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.WebApplicationContext; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; /** * 测试类 * * @version V1.0 * @author songxiaotong * @date 2018年6月28日 下午2:10:46 * @Description */ @SuppressWarnings("deprecation") @RunWith(SpringJUnit4ClassRunner.class) // 设置读取的spring配置文件 @ContextConfiguration({ "classpath*:servlet-context.xml" }) // 当然 你可以声明一个事务管理 每个单元测试都进行事务回滚 无论成功与否 // @TransactionConfiguration(defaultRollback = true) @Rollback(value = true) @Transactional @WebAppConfiguration public class MyTest2 { /** * 日志记录工具 */ private static final Logger LOGGER = LogManager.getLogger(MyTest2.class); /** * WebApplicationContext */ @Autowired private WebApplicationContext wac; private MockMvc mockMvc; /** * 初始化mvc请求对象 * * @throws Exception */ @Before public void setUp() throws Exception { this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); } @Test public void test() { try { MockHttpSession session = new MockHttpSession(); JSONObject param = new JSONObject(); param.put("test1", "1"); param.put("test2", "2"); param.put("test3", "3"); MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/zchx/test/test"); requestBuilder.contentType(MediaType.APPLICATION_JSON); requestBuilder.content(JSONObject.toJSONString(param, SerializerFeature.WriteMapNullValue)); // requestBuilder.content(param.toString()); requestBuilder.session(session); // 执行一个请求; ResultActions result = mockMvc.perform(requestBuilder); // 添加执行完成后的断言 result.andExpect(MockMvcResultMatchers.status().isOk()); // 添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。 result.andDo(MockMvcResultHandlers.print()); // 表示执行完成后返回相应的结果。 MvcResult mvcResult = result.andReturn(); LOGGER.info(mvcResult.getResponse().getContentAsString()); } catch (Exception e) { LOGGER.error(e.getMessage()); } } }