最近使用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. Python--抽象类接口类

    一. 继承有两种用途: """ 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了 ...

  2. Vertx eventbus模块解析

    eventbus 事件總線 協議棧 TCP分包,粘包解決採用方案: 消息定长(定義消息体總长度),消息分为消息头和消息体 dataType bytes description int 4 包体总大小 ...

  3. 微信支付的安全漏洞之XXE

    1.场景:国外安全社区公布微信支付官方SDK存在严重漏洞,可导致商家服务器被入侵(绕过支付的效果).目前,漏洞详细信息以及攻击方式已被公开,影响范围巨大(已确认陌陌.vivo因使用该SDK而存在该漏洞 ...

  4. Winform Focus()函数不起作用 解决办法

    private void Form_Load(object sender, EventArgs e) { this.txtName.Focus(); } 光标到不了txtName.可能的原因 TabI ...

  5. Elasticsearch 简单快照备份

    创建仓库 POST http://10.10.14.201:9200/_snapshot/backup { "type": "fs", "settin ...

  6. scrapy相关 通过设置 FEED_EXPORT_ENCODING 解决 unicode 中文写入json文件出现`\uXXXX`

    0.问题现象 爬取 item: 2017-10-16 18:17:33 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.hu ...

  7. 根Activity启动过程

    --摘自<Android进阶解密> 根Activity启动过程中会涉及4个进程,分别是Zygote进程.Launcher进程.AMS所在进程(SystemServer进程).应用程序进程, ...

  8. Telephone Lines POJ - 3662 (二分+spfa)

    Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is uncoop ...

  9. webpack 打包测试和生产多个版本

    cross-env修改生产环境变量 npm i --save-dev cross-env 在package.json里这么配置 npm run build就是打包到生产环境 npm run build ...

  10. 自定义MVC实现登录案例

    MVC框架: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离 ...