EasyMock介绍
EasyMock介绍
一、 mock介绍
1.1简介
mock测试
就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
mock对象
这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。
mock对象使用范畴
真实对象具有不可确定的行为,产生不可预测的效果,(如:股票行情,天气预报) 真实对象很难被创建的 真实对象的某些行为很难被触发 真实对象实际上还不存在的(和其他开发小组或者和新的硬件打交道)等等.
什么时候需要Mock对象
----- 真实对象具有不可确定的行为(产生不可预测的结果,如股票的行情)
----- 真实对象很难被创建(比如具体的web容器)
----- 真实对象的某些行为很难触发(比如网络错误)
----- 真实情况令程序的运行速度很慢
----- 真实对象有用户界面
----- 测试需要询问真实对象它是如何被调用的(比如测试可能需要验证某个回调函数是否被调用了)
----- 真实对象实际上并不存在(当需要和其他开发小组,或者新的硬件系统打交道的时候,这是一个普遍的问题)
1.2举例说明
一个闹钟根据时间来进行提醒服务,如果过了下午5点钟就播放音频文件提醒大家下班了,如果我们要利用真实的对象来测试的话就只能苦苦等到下午五点,然后把耳朵放在音箱旁…我们可不想这么笨,我们应该利用 mock对象来进行测试,这样我们就可以模拟控制时间了,而不用苦苦等待时钟转到下午5点钟了。一个闹钟根据时间来进行提醒服务,如果过了下午5点钟就播 放音频文件提醒大家下班了,如果我们要利用真实的对象来测试的话就只能苦苦等到下午五点,然后把耳朵放在音箱旁…我们可不想这么笨,我们应该利用 mock对象来进行测试,这样我们就可以模拟控制时间了,而不用苦苦等待时钟转到下午5点钟了。
public abstract class Environmental {boolean playedWav = false;public abstract long getTime();public abstract void playWavFile(String fileName);public abstract boolean wavWasPlayed();public abstract void resetWav();
}
真实的实现代码:
public class SystemEnvironment extends Environmental {
public long getTime() {
return System.currentTimeMillis();
}
public void playWavFile(String fileName) {playedWav = true;
}public boolean wavWasPlayed() {return playedWav;
}public void resetWav() {playedWav = false;
}
}
下面是mock对象:
public class MockSystemEnvironment extends Environmental {
private long currentTime;
public long getTime() {return currentTime;
}public void setTime(long currentTime) {this.currentTime = currentTime;
}public void playWavFile(String fileName) {playedWav = true;
}public boolean wavWasPlayed() {return playedWav;
}public void resetWav() {playedWav = false;
}
}
下面是一个调用getTime的具体类:
public class Checker {
private Environmental env;
public Checker(Environmental env) {this.env = env;
}public void reminder() {Calendar cal = Calendar.getInstance();cal.setTimeInMillis(env.getTime());int hour = cal.get(Calendar.HOUR_OF_DAY);if (hour >= 17) {env.playWavFile("quit_whistle.wav");}
}
}
使用env.getTime()的被测代码并不知道测试环境和真实环境之间的区别,因为它们都实现了相同的接口。现在,你可以借助mock对象,通过把时间设置为已知值,并检查行为是否如预期那样来编写测试。
public class TestChecker extends TestCase {
public void testQuittingTime() {
MockSystemEnvironment env = new MockSystemEnvironment();
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 11);
cal.set(Calendar.DAY_OF_MONTH, 7);
cal.set(Calendar.HOUR_OF_DAY, 16);
cal.set(Calendar.MINUTE, 55);
//设置时间为16:55 long t1 = cal.getTimeInMillis();System.out.println(t1);env.setTime(t1);Checker checker = new Checker(env);checker.reminder();assertFalse(env.wavWasPlayed());//设置时间为17:00t1 += (5 * 60 * 1000);System.out.println(t1);env.setTime(t1);checker.reminder();assertTrue(env.wavWasPlayed());env.resetWav();//设置时间为19:00t1 += 2 * 60 * 60 * 1000;System.out.println(t1);env.setTime(t1);checker.reminder();assertTrue(env.wavWasPlayed());
}
}
这就是mock对象的全部:伪装出真实世界的某些行为,使你可以集中精力测试好自己的代码。
二.EasyMock用法使用
EasyMock,可以参考如下步骤:
1.创建Mock对象
2.设定Mock对象的预期行为和输出
3.将Mock对象切换到Replay状态
4.在单元测试中调用Mock对象
5.检查对Mock对象的调用是否与预期一致
三.使用easymock简单使用假数据的方法
第一步:https://www.easy-mock.com/进入该网站,进行注册![
点击右上角的创建接口,会进入这个页面
点击创建即可获得我们需要的接口
第二步:复制我们创建成功的接口到vue请求地址中
<template><div class="home"><div class="btn" @click="index"></div></div></template><script>
import HelloWorld from '@/components/HelloWorld.vue'
export default {name: 'home',components: {HelloWorld},data(){},created(){},methods:{btn(){let url = "https://www.easy-mock.com/mock/5d16309c92b9806384cf46e8/example/index"; //放在这this.axios.get(url).then(result=>{this.floor1s = result.data.data;})}}
}
</script>
第三步:npm run serve 哈哈哈哈!!!
EasyMock介绍相关推荐
- easymock安装和使用
easymock安装和使用 EasyMock 介绍 EasyMock是一个构建模拟数据的平台,也可以说是一个在线mockJs平台 EasyMock优势 省去配置.安装mockJs步骤,解决多人协作Mo ...
- easymock 图片_easy-mock的使用
上一节我们讲了如何使用mockjs来生成模拟数据,这一节我们来介绍另外一个实用的mock工具 - easy-mock,它是一个简单.高效.可视化的在线mock工具.相对于我们上节的 mockjs主要用 ...
- EasyMock 使用方法与原理剖析--转载
原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一 ...
- EasyMock 使用方法与原理剖析
Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开. 编写自定义的 Mock 对象需要额外的编码工作,同时也可能 ...
- easymock教程_EasyMock教程–入门
easymock教程 在本文中,我将向您展示EasyMock是什么,以及如何使用它来测试Java应用程序. 为此,我将创建一个简单的Portfolio应用程序,并使用JUnit&EasyMoc ...
- JUnit与EasyMock合作
开发人员始终需要注意所产生的代码. 在实施新功能或修复某些错误之后,应确保它们能够正常工作. 至少可以借助单元测试来实现. 由于此博客致力于Java编程语言,因此今天我将撰写有关JUnit 4.1和E ...
- EasyMock教程–入门
在本文中,我将向您展示EasyMock是什么,以及如何使用它来测试Java应用程序. 为此,我将创建一个简单的Portfolio应用程序,并使用JUnit&EasyMock库对其进行测试. 在 ...
- easymock 图片_数据模拟神器 easy-mock 正式开源
开源公告 由大搜车无线团队出品的 easy-mock 在线数据模拟服务上线至今已经有几个月时间了,近期网站刚更新了焕然一新的 2.0 版本,与此同时,我们还带来一个更重磅的消息: 今天正式将整个服务的 ...
- EasyMock 简介
来源:https://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ 使用注意: a.静态方法( static 修饰)无法模拟. 1. ...
最新文章
- 激动人心的AutoCAD .net开发技术
- 《转》推荐系统经典论文文献及业界应用
- 机器学习资源和路线图
- C语言入门基础——Brute-Force算法
- 加载exe的PE信息并输出相关PE信息的一段c++代码
- kali系统支持那些手机_将kali安装到手机上作为便携式系统启动盘的方法
- BiLSTM-CRF模型的流程
- 网站加速教程--提升性能的同时节约10倍成本
- 七(10)springtask-RabbitMq-内容审核
- 如何从初级程序员顺利晋升到高级程序员?
- 小融资 大趋势 小嗨互联网融资研究分析 20190101-20190104
- FPGA专题-相位累加器(DDS)
- 密集匹配实验数据共享
- 7-3 二叉树路径和II
- PHP问卷调查管理系统 PHP+MySQL
- matlab表面形貌,采用Photoshop与MATLAB软件分析壁画表面形貌变化的方法与流程
- Picgo + Gitee + Github 搭建免费图库, Typora 自动上传图片
- IBM研发仿人脑计算机原型 用电子血液同时供能与冷却
- 2012-06-25创建数据库函数的基本语法
- Android 时间同步原理分析