最近使用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. git提交忽略某些文件或文件夹

    记得第一次用 github 提交代码,node_modules 目录死活传不上去,哈哈哈,后来才知道在 .gitignore 文件里设置了忽略 node_modules 目录上传.是的, .gitig ...

  2. List的分组,求和,过滤操作

    package ---; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /* ...

  3. Gmagick convert SVG to PNG with transparent/opacity background

    1 前言 在Ubuntu18.04环境下,用gographics/gmagick API使用了以下代码未有效果 pw := gmagick.NewPixelWand() pw.SetOpacity(1 ...

  4. POJ1321 棋盘问题(简单搜索)

    题意: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放 ...

  5. 在DIV中如何控制字的位置?

    想到实现字体在div中处于上图(右下角)的位置的话,只需在字体样式上面加上这行代码就好了:style='margin-top:120px;height:20px;float:right;text-al ...

  6. centos7中设置nginx的systemctl启动方式

    1.建立服务文件 (1)文件路径 vim /usr/lib/systemd/system/nginx.service (2)服务文件内容 [Unit] Description=nginx - high ...

  7. 团队项目——NABCD

    团队名称:天码行空 团队项目名称:天码记账 团队口号:彰明往事,考察未来 发布后一周内用户量:1千 N(Need)需求 这个软件主要解决了大学生管理自己财务状况的问题,随着手机支付的日趋流行大家对财务 ...

  8. springboot集成mybatis源码分析(一)

    本篇文章只是简单接受使用,具体源码解析请看后续文章 1.新建springboot项目,并导入mybatis的pom配置 配置数据库驱动和mybatis dependency <dependenc ...

  9. Python学习笔记五

    一. 递归 递归函数: def a (): print ("from b") b() def b(): print("from a ") a() a() 递推和 ...

  10. Spring Boot MongoDB 查询操作 (BasicQuery ,BSON)

    MongoDB 查询有四种方式:Query,TextQuery,BasicQuery 和 Bson ,网上太多关于 Query 的查询方式,本文只记录 BasicQuery和Bson 的方式,Basi ...