SpringMVC 框架下的junit测试方式

 package com.sixeco.user.controller;

 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.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; /**
* 测试类
*
* @author songxiaotong
* @version [版本号, 2017年09月15日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
@RunWith(SpringJUnit4ClassRunner.class)
// 设置读取的spring配置文件
@ContextConfiguration({ "classpath:servlet-context.xml" })
// 当然 你可以声明一个事务管理 每个单元测试都进行事务回滚 无论成功与否
@TransactionConfiguration(defaultRollback = true)
@Transactional
@WebAppConfiguration
public class UserControllerTest { /**
* 日志记录工具
*/
private static final Logger LOGGER = LogManager.getLogger(UserControllerTest.class); @Autowired
private WebApplicationContext wac; private MockMvc mockMvc; @Before
public void setUp() throws Exception {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
} @Test
@Rollback(false)
public void aaa() {
LOGGER.info("12312312312");
System.out.println("aaa");
} /**
* Json请求入参方式测试接口
*
* @see [类、类#方法、类#成员]
*/
@Test
// 有些单元测试你不希望回滚
@Rollback(true)
public void Test() {
try { // 构造一个请求
MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/sixeco/user/sendverifycode");
// 设置请求头
requestBuilder.contentType(MediaType.APPLICATION_JSON); // 设置参数
requestBuilder.param("mobile", "15812345678"); // 执行一个请求;
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()); LOGGER.info("test success");
} catch (Exception e) {
LOGGER.error(e.getMessage());
e.printStackTrace();
}
} /**
* 普通入参请求方式测试接口
*
* @see [类、类#方法、类#成员]
*/
@Test
// 有些单元测试你不希望回滚
// @Rollback(false)
public void regularRequestTest() {
try { MockHttpServletRequestBuilder b = MockMvcRequestBuilders.post("/sixeco/user/sendverifycode");
b.contentType(MediaType.APPLICATION_JSON);
b.param("mobile", "15812345678"); mockMvc.perform(b).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print());
// LOGGER.info("test success");
} catch (Exception e) {
// LOGGER.error(e.getMessage());
e.printStackTrace();
}
}
}

最新文章

  1. 深入探索RB-tree数据结构
  2. UVA 572 (dfs)
  3. Objective-C数据类型之id,SEL,BOOL,nil,NULL和NSNull
  4. Java通过jedis操作redis缓存
  5. 关于oracle的rowid
  6. Asp.Net中动态页面转静态页面
  7. linux下git的安装和使用(转)
  8. mysql命令行里的加载更多显示
  9. html中的表格 bootstrap-table
  10. Android开发环境配置(win7_64bit)
  11. tmux配置
  12. 用pickle模块实现“增删改查”的简易功能
  13. CSS学习笔记3:选择器及优先级
  14. 强大的测试管理工具---TestTrack Pro
  15. Nginx 防盗链 secure_link 模块
  16. java final、finally、finalize
  17. Django + Axios & Ajax post和get 传参
  18. EasyTouch中虚拟摇杆的使用EasyJoystick
  19. EntityFramework的安装
  20. Unknown type name 'NSString' 解决方案

热门文章

  1. NN tutorials:
  2. 【未完成】【oracle】存储过程按日期循环
  3. 9.28 csp-s模拟测试54 x+y+z
  4. eclipse 离线安装SVN插件(支持eclipse201909)
  5. LCT好题总结
  6. 【SpringCloud之pigx框架学习之路 】1.基础环境安装
  7. Windows Azure Virtual Machine (39) 清除Linux挖矿病毒
  8. JSP页面的注释细节
  9. List集合分组实现教程
  10. Docker 下开发安装hyperf