easymock快速入门
2019独角兽企业重金招聘Python工程师标准>>>
easymock是众多mock之中的很容易用的mock,今天刚开始学习,来个简单的教程.以购物车结算为例子,比如首先是每一个商品项的pojo
[code="java"]
public class Item {
private String name;
private int quantity;
public Item(String name, int quantity) {
super();
this.name = name;
this.quantity = quantity;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
[/code]
然后是购物车的:
[code="java"]
public class ShoppingCart {
private String name;
private Store store = null;
private List<Item> items = new ArrayList();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Item> getItems() {
return items;
}
public void setItems(List<Item> items) {
this.items = items;
}
public void addItem(Item item)
{
items.add(item);
}
public void setStore(Store store)
{
this.store=store;
}
public Store getStore()
{
return (this.store);
}
public Double calculateTotal()
{
Double total = 0.0;
for (Item item : this.items) {
total+= (store.getPrice(item.getName()) * item.getQuantity());
}
DecimalFormat decim = new DecimalFormat("0.00");
Double price = Double.parseDouble(decim.format(total));
return price;
}
[/code]
在这个购物车的计算中,在计算总价格方面,
total+= (store.getPrice(item.getName()) * item.getQuantity());
这里,依赖了一个额外的对象store,根据store.getPrice()方法求出某个商品的单价,
但这里模拟的是现在根本不知道这个store 是如何实现的,有可能是第三方的,于是
easymock就派上用长了,它可以根据接口去模拟一个实现出来,下面直接看
ShoppingCartTest .java
[code="java"]
public ShoppingCart cart = null;
public Store storeMock = null;
@Before
public void initialize()
{
cart = new ShoppingCart();
storeMock = EasyMock.createMock(Store.class);
cart.setStore(storeMock);
}
@Test
public void testShoppingCart()
{
EasyMock.expect(storeMock.getPrice("Mead Spiral Bound Notebook, College Rule")).andReturn(5.99);
EasyMock.expect(storeMock.getPrice("Kindle Fire HD 8.9")).andReturn(499.99);
//开始使用mock
EasyMock.replay(storeMock);
Item item1 = new Item("Mead Spiral Bound Notebook, College Rule", 3);
Item item2 = new Item("Kindle Fire HD 8.9",1);
cart.addItem(item1);
cart.addItem(item2);
double total = cart.calculateTotal();
System.out.println("Total price of items in shopping cart: $"+total);
assertEquals("Result",505.96, total,0);
}
@After
public void cleanup()
{
cart=null;
storeMock=null;
}
[/code]
同junit一样,在before中,
@Before
public void initialize()
{
cart = new ShoppingCart();
storeMock = EasyMock.createMock(Store.class);
cart.setStore(storeMock);
}
storeMock = EasyMock.createMock(Store.class);就可以模拟一个实现出来了,
然后
EasyMock.expect(storeMock.getPrice("Mead Spiral Bound Notebook, College Rule")).andReturn(5.99);
这里,使用easymock的断言机制,断言出这个属的单价是5.99,然后记得使用
EasyMock.replay(storeMock);就可以在真正的测试中,使用store这个对象了;最后记得cleanup中清理下.
简单来说,mock系列框架的大概原理就这样了,接下来就是深入的学习
转载于:https://my.oschina.net/jackyrong/blog/161777
easymock快速入门相关推荐
- Shiro第一个程序:官方快速入门程序Qucickstart详解教程
目录 一.下载解压 二.第一个Shiro程序 1. 导入依赖 2. 配置shiro配置文件 3. Quickstart.java 4. 启动测试 三.shiro.ini分析 四.Quickstart. ...
- 计算机入门新人必学,异世修真人怎么玩?新手快速入门必备技巧
异世修真人怎么快速入门?最近新出来的一款文字修仙游戏,很多萌新不知道怎么玩?进小编给大家带来了游戏新手快速入门技巧攻略,希望可以帮到大家. 新手快速入门攻略 1.开局出来往下找婆婆,交互给点钱,旁边有 ...
- Spring Boot 2 快速教程:WebFlux 快速入门(二)
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...
- Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)
2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Database 手札> 第 63 章 Apache Hive 目录 63.1. ...
- 《iOS9开发快速入门》——导读
本节书摘来自异步社区<iOS9开发快速入门>一书中的目录,作者 刘丽霞 , 邱晓华,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 前 言 第1章 iOS ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序
BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...
- python scrapy菜鸟教程_scrapy学习笔记(一)快速入门
安装Scrapy Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. pip install sc ...
- OpenStack快速入门
OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助读者建立起一份OpenStack最小化安装.我是五岳之巅,翻译中多采用意译法,所以个别词与原版有出入,请大家谅解.我 ...
- Expression Blend实例中文教程(2) - 界面快速入门
上一篇主要介绍Expression系列产品,另外概述了Blend的强大功能,本篇将用Blend 3创建一个新Silverlight项目,通过创建的过程,对Blend进行快速入门学习. 在开始使用Ble ...
最新文章
- java 部分类_为什么微软部分类和Java不?
- 浅谈Angular网络请求
- train和test的列分布差异(covariate shift)观察
- java获取音频_java获取音频文件播放时长
- 面向对象:MATLAB的自定义类 [MATLAB]
- tablesorter,jquery
- 工欲善其事必先利其器——网络工程师必备六款软件(收藏下载❤️)
- 【微信小程序】身份证拍照、上传并OCR识别
- WEB免费打印控件推荐(4款)
- ER Studio 直接导出sql建表
- steam怎么解除共享_如何启用Steam家庭共享(及其功能)
- 使用xftp怎么向服务器传输文件,如何使用文件传输软件Xftp
- 邓应海:3.24最新黄金走势分析,黄金多空操作建议
- Centos6连接网络配置
- 【计算机操作系统】新兴操作系统
- Linux常用命令速查手册——嘎嘎管用
- Android 8,Android开发经典实战
- 雾计算和边缘计算有什么区别
- vscode配置opencv环境,包括opencv源码编译(mingw64 + cmake)
- 一键获取LOL英雄联盟所有英雄技能图片