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介绍相关推荐

  1. easymock安装和使用

    easymock安装和使用 EasyMock 介绍 EasyMock是一个构建模拟数据的平台,也可以说是一个在线mockJs平台 EasyMock优势 省去配置.安装mockJs步骤,解决多人协作Mo ...

  2. easymock 图片_easy-mock的使用

    上一节我们讲了如何使用mockjs来生成模拟数据,这一节我们来介绍另外一个实用的mock工具 - easy-mock,它是一个简单.高效.可视化的在线mock工具.相对于我们上节的 mockjs主要用 ...

  3. EasyMock 使用方法与原理剖析--转载

    原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一 ...

  4. EasyMock 使用方法与原理剖析

    Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开. 编写自定义的 Mock 对象需要额外的编码工作,同时也可能 ...

  5. easymock教程_EasyMock教程–入门

    easymock教程 在本文中,我将向您展示EasyMock是什么,以及如何使用它来测试Java应用程序. 为此,我将创建一个简单的Portfolio应用程序,并使用JUnit&EasyMoc ...

  6. JUnit与EasyMock合作

    开发人员始终需要注意所产生的代码. 在实施新功能或修复某些错误之后,应确保它们能够正常工作. 至少可以借助单元测试来实现. 由于此博客致力于Java编程语言,因此今天我将撰写有关JUnit 4.1和E ...

  7. EasyMock教程–入门

    在本文中,我将向您展示EasyMock是什么,以及如何使用它来测试Java应用程序. 为此,我将创建一个简单的Portfolio应用程序,并使用JUnit&EasyMock库对其进行测试. 在 ...

  8. easymock 图片_数据模拟神器 easy-mock 正式开源

    开源公告 由大搜车无线团队出品的 easy-mock 在线数据模拟服务上线至今已经有几个月时间了,近期网站刚更新了焕然一新的 2.0 版本,与此同时,我们还带来一个更重磅的消息: 今天正式将整个服务的 ...

  9. EasyMock 简介

    来源:https://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ 使用注意: a.静态方法( static 修饰)无法模拟. 1. ...

最新文章

  1. 激动人心的AutoCAD .net开发技术
  2. 《转》推荐系统经典论文文献及业界应用
  3. 机器学习资源和路线图
  4. C语言入门基础——Brute-Force算法
  5. 加载exe的PE信息并输出相关PE信息的一段c++代码
  6. kali系统支持那些手机_将kali安装到手机上作为便携式系统启动盘的方法
  7. BiLSTM-CRF模型的流程
  8. 网站加速教程--提升性能的同时节约10倍成本
  9. 七(10)springtask-RabbitMq-内容审核
  10. 如何从初级程序员顺利晋升到高级程序员?
  11. 小融资 大趋势 小嗨互联网融资研究分析 20190101-20190104
  12. FPGA专题-相位累加器(DDS)
  13. 密集匹配实验数据共享
  14. 7-3 二叉树路径和II
  15. PHP问卷调查管理系统 PHP+MySQL
  16. matlab表面形貌,采用Photoshop与MATLAB软件分析壁画表面形貌变化的方法与流程
  17. Picgo + Gitee + Github 搭建免费图库, Typora 自动上传图片
  18. IBM研发仿人脑计算机原型 用电子血液同时供能与冷却
  19. 2012-06-25创建数据库函数的基本语法
  20. Android 时间同步原理分析

热门文章

  1. 白话空间统计三十:地统计(4)探索性数据分析(1)
  2. MATLAB中函数find的使用方法概述,简单易懂+例子
  3. 国内外主流云主机平台对比(含Github Education Pack的申请流程)
  4. FPGA动态功耗和静态功耗
  5. 代刷网mysql订单表怎么改_彩虹代刷网修改订单数和交易金额教程
  6. vscode搭建vue开发环境(vue入门)
  7. m-arcsinh激活函数
  8. HAL库的STM32单片机LTDC驱动显示LCD屏幕
  9. 怎么彻底卸载office365?
  10. Cortex-M3 异常和中断---基于NXP LPC177x/8x