最近使用Mockito完成了几个简单的测试,写个博客mark一下:

  第一种模拟web请求

  

@SpringBootTest
@RunWith(SpringRunner.class)
@WebAppConfiguration //测试环境使用,用来表示测试环境使用的ApplicationContext将是WebApplicationContext类型的;value指定web应用的根
public class ControllerTest {
private static final Logger logger = LogManager.getLogger(ControllerTest.class); @Autowired
private WebApplicationContext context; @Mock
private UserInfoService userInfoService; private MockMvc mockMvc; /**
* 构造MockMvc
* @throws Exception
*/
@Before
public void setupMockMvc() throws Exception {
// 初始化Mock
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
} /**
* 模拟add请求
*/
@Test
public void insertUserInfoTest() {
UserInfo userInfo = initUserInfo();
when(userInfoService.insert(any())).thenReturn(1);
logger.info("++++++++++++++++++++++++++" + userInfo.toString());
// 调用接口,传入添加的用户参数
try{
String response = mockMvc.perform(post("/userInfo/add").contentType(MediaType.APPLICATION_JSON)
.content(userInfo.toString()).header("SESSIONNO", "EA60F3C2C7384DBA8A7B8B114474DC12"))
.andReturn().getResponse().getContentAsString();
logger.info("******************" + response); }catch (Exception e) {
e.printStackTrace();
} } @Test
public void addTest() {
try {
// 1. controller mvc test
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/userInfo/add"))
.andExpect(MockMvcResultMatchers.handler().handlerType(UserInfoController.class))
.andExpect(MockMvcResultMatchers.handler().methodName("addUserInfo"))
// .andExpect(MockMvcResultMatchers.view().name("demo/hello"))
// .andExpect(MockMvcResultMatchers.model().attributeExists("msg"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
// Assert.assertNotNull(result.getModelAndView().getModel().get("msg")); }catch (Exception e) {
e.printStackTrace();
}
} /**
* 模拟update测试
*/
@Test
public void updateUserInfo() {
try{
// String response = mockMvc.perform(post("/user/updateUser").contentType(MediaType.APPLICATION_JSON)
// .content(userInfo.toString()).header("SESSIONNO", "EA60F3C2C7384DBA8A7B8B114474DC12"))
// .andReturn().getResponse().getContentAsString();
// logger.info("update****" + response);
}catch (Exception e) {
e.printStackTrace();
}
} private UserInfo initUserInfo() {
UserInfo userInfo = new UserInfo();
userInfo.setBirthday(new Timestamp(System.currentTimeMillis()));
userInfo.setCreateTime(new Timestamp(System.currentTimeMillis()));
userInfo.setEducation(5);
userInfo.setIdCardCode("********************");
userInfo.setMaritalStatus(1);
userInfo.setNickName("社会主义接班人");
userInfo.setPassword(encoderByMd5("a123456"));
userInfo.setPhoneNumber("************");
userInfo.setSex(1);
userInfo.setStatus(1);
userInfo.setUserAddress("hlxj");
userInfo.setUserEmail("**********@qq.com");
userInfo.setUserImage("图片");
userInfo.setUserName("dsc"); return userInfo;
} private String encoderByMd5(String password) {
//确定计算方法
String md5Password = null;
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
//加密后的字符串
md5Password = base64en.encode(md5.digest(password.getBytes("utf-8")));
logger.info(md5Password);
}catch (Exception e){
e.printStackTrace();
} return md5Password;
}
}

  第二种模拟web请求

  

@RunWith(SpringRunner.class)
public class ServiceTest { private static final Logger logger = LogManager.getLogger(ServiceTest.class); @InjectMocks
UserInfoController userInfoController; @Mock
UserInfoService userInfoService; @Before
public void init() {
UserInfo userInfo = initUserInfo(); given(userInfoService.insert(any())).willReturn(1);
given(userInfoService.selectUnique(any())).willReturn(null, userInfo); } @Test
public void testAdd() {
UserInfo userInfo = new UserInfo();
userInfoController.addUserInfo(userInfo);
userInfo = initUserInfo();
userInfoController.addUserInfo(userInfo); } @Test
public void getUserInfoTest() {
UserInfo userInfo = new UserInfo();
logger.info("测试1*** " + userInfoController.getUserInfo(userInfo));
userInfo.setId(3L);
logger.info("测试2*** " + userInfoController.getUserInfo(userInfo));
} private UserInfo initUserInfo() {
UserInfo userInfo = new UserInfo();
userInfo.setBirthday(new Timestamp(System.currentTimeMillis()));
userInfo.setCreateTime(new Timestamp(System.currentTimeMillis()));
userInfo.setEducation(5);
userInfo.setIdCardCode("********************");
userInfo.setMaritalStatus(1);
userInfo.setNickName("社会主义接班人");
userInfo.setPassword(encoderByMd5("a123456"));
userInfo.setPhoneNumber("************");
userInfo.setSex(1);
userInfo.setStatus(1);
userInfo.setUserAddress("hlxj");
userInfo.setUserEmail("**********@qq.com");
userInfo.setUserImage("图片");
userInfo.setUserName("dsc"); return userInfo;
} private String encoderByMd5(String password) {
//确定计算方法
String md5Password = null;
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
//加密后的字符串
md5Password = base64en.encode(md5.digest(password.getBytes("utf-8")));
logger.info(md5Password);
}catch (Exception e){
e.printStackTrace();
} return md5Password;
}
}

  以上两种只是我的个人测试,由于刚刚开始试验,对于一些细节还不是熟悉,期待日后修改。。。

Mockito单元测试实战的更多相关文章

  1. SpringBootTest单元测试实战、SpringBoot测试进阶高级篇之MockMvc讲解

    1.@SpringBootTest单元测试实战 简介:讲解SpringBoot的单元测试 1.引入相关依赖 <!--springboot程序测试依赖,如果是自动创建项目默认添加--> &l ...

  2. 小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_17、SpringBootTest单元测试实战

    笔记 1.@SpringBootTest单元测试实战     简介:讲解SpringBoot的单元测试         1.引入相关依赖              <!--springboot程 ...

  3. JUnit + Mockito 单元测试

    原 JUnit + Mockito 单元测试(二) 2015年01月05日 17:26:02 sp42a 阅读数:60755 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

  4. JUnit + Mockito 单元测试(二)

    摘自: http://blog.csdn.net/zhangxin09/article/details/42422643 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 入门 ...

  5. 使用 Mockito 单元测试 – 教程

    tanyuanji@126.com 版本历史 - - - - 使用 Mockito 进行测试 该教程主要讲解 Mockito 框架在Eclipse IDE 中的使用   目录 tanyuanji@12 ...

  6. JUnit + Mockito 单元测试(二)(good)

    import org.junit.Test; import org.mockito.Matchers; import org.mockito.Mockito; import java.util.Lis ...

  7. Mockito单元测试

    Mockito简介 Mockito是一个单元测试框架,需要Junit的支持.在我们的项目中,都存在相当多的依赖关系,当我们在测试某一个业务相关的接口或则方法时,绝大多数时候是没有办法或则很难去添加所有 ...

  8. 基于spring与mockito单元测试Mock对象注入

    转载:http://www.blogjava.net/qileilove/archive/2014/03/07/410713.html 1.关键词 单元测试.spring.mockito 2.概述 单 ...

  9. 一文让你快速上手 Mockito 单元测试框架

    前言 在计算机编程中,单元测试是一种软件测试方法,通过该方法可以测试源代码的各个单元功能是否适合使用.为代码编写单元测试有很多好处,包括可以及早的发现代码错误,促进更改,简化集成,方便代码重构以及许多 ...

随机推荐

  1. cefsharp解决闪烁

    CefSharp禁用GPU的命令行参数 其中,Major和Minor分别指代系统的主版本(大版本).次版本(小版本)版本号.其中指定了Windows7系统会禁用 GPU.,突发奇想,是否windows ...

  2. 51nod--1134 最长递增子序列 (动态规划)

    题目: 给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10. Input 第1行: ...

  3. 【python3 自动化基础之pip】pip常用命令归类

    1.升级pippython -m pip install --upgrade pip(包名) 2.安装pymysql pip install pymysql 3.pip按照到指定目录 python - ...

  4. Google Android SDK开发范例大全笔记 二

    网络设备管理相关相关 代码地址 1 WifiManager LocationManager分别控制 wifi及GPS WifiManager 判断网络状态 ,LocationManager判断定位状态 ...

  5. js定义数组集合

    简单描述:最近脑子有点抽,js要用到数组,竟然傻傻的写了 var [] str = .简直是糟糕的不要不要的 //js代码var str = [];var str =new Array(); 啥也不说 ...

  6. 动态加载机Servlet容器加载器

    动态加载是Servlet 3.0中的新特性,它可以实现在 不重启Web应用的情况下加载新的Web对象(Servlet. Filter.Listener).Servlet容器加载器也是Servlet 3 ...

  7. Python内置模块之subprocess

    import subprocess ret = subprocess.Popen('netstat -ano',shell=True,stdout=subprocess.PIPE,stderr=sub ...

  8. [转]一个普通IT人的十年回顾---金旭亮

    金旭亮老师十年体会,很有收获.转自网络. 金旭亮于1989年与超级解霸的开发者梁肇新同时迈入广西大学的校门,却走了一条与其不同的路. 1994年起开始自学计算机专业本科课程,并开始编程,从未间断,迄今 ...

  9. C++运算符重载——类型转换

    类型转换函数能够实现把一个类 类型 转换成 基本数据类型(int.float.double.char等) 或者 另一个类 类型. 其定义形式如下,注意不能有返回值,不能有参数,只能返回要转换的数据类型 ...

  10. Codeforces 431E Chemistry Experiment 线段树 + 二分

    Chemistry Experiment 维护一个权值线段树,然后二分答案. #include<bits/stdc++.h> #define LL long long #define LD ...