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