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快速入门相关推荐

  1. Shiro第一个程序:官方快速入门程序Qucickstart详解教程

    目录 一.下载解压 二.第一个Shiro程序 1. 导入依赖 2. 配置shiro配置文件 3. Quickstart.java 4. 启动测试 三.shiro.ini分析 四.Quickstart. ...

  2. 计算机入门新人必学,异世修真人怎么玩?新手快速入门必备技巧

    异世修真人怎么快速入门?最近新出来的一款文字修仙游戏,很多萌新不知道怎么玩?进小编给大家带来了游戏新手快速入门技巧攻略,希望可以帮到大家. 新手快速入门攻略 1.开局出来往下找婆婆,交互给点钱,旁边有 ...

  3. Spring Boot 2 快速教程:WebFlux 快速入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...

  4. Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)

    2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Database 手札> 第 63 章 Apache Hive 目录 63.1. ...

  5. 《iOS9开发快速入门》——导读

    本节书摘来自异步社区<iOS9开发快速入门>一书中的目录,作者 刘丽霞 , 邱晓华,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 前 言 第1章 iOS ...

  6. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

    BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...

  7. python scrapy菜鸟教程_scrapy学习笔记(一)快速入门

    安装Scrapy Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. pip install sc ...

  8. OpenStack快速入门

    OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助读者建立起一份OpenStack最小化安装.我是五岳之巅,翻译中多采用意译法,所以个别词与原版有出入,请大家谅解.我 ...

  9. Expression Blend实例中文教程(2) - 界面快速入门

    上一篇主要介绍Expression系列产品,另外概述了Blend的强大功能,本篇将用Blend 3创建一个新Silverlight项目,通过创建的过程,对Blend进行快速入门学习. 在开始使用Ble ...

最新文章

  1. java 部分类_为什么微软部分类和Java不?
  2. 浅谈Angular网络请求
  3. train和test的列分布差异(covariate shift)观察
  4. java获取音频_java获取音频文件播放时长
  5. 面向对象:MATLAB的自定义类 [MATLAB]
  6. tablesorter,jquery
  7. 工欲善其事必先利其器——网络工程师必备六款软件(收藏下载❤️)
  8. 【微信小程序】身份证拍照、上传并OCR识别
  9. WEB免费打印控件推荐(4款)
  10. ER Studio 直接导出sql建表
  11. steam怎么解除共享_如何启用Steam家庭共享(及其功能)
  12. 使用xftp怎么向服务器传输文件,如何使用文件传输软件Xftp
  13. 邓应海:3.24最新黄金走势分析,黄金多空操作建议
  14. Centos6连接网络配置
  15. 【计算机操作系统】新兴操作系统
  16. Linux常用命令速查手册——嘎嘎管用
  17. Android 8,Android开发经典实战
  18. 雾计算和边缘计算有什么区别
  19. vscode配置opencv环境,包括opencv源码编译(mingw64 + cmake)
  20. 一键获取LOL英雄联盟所有英雄技能图片

热门文章

  1. CentOS7下Docker Storage Pool扩容
  2. 前端基础面试题大全-极乐科技(一)-JS部分
  3. CentOS系统安装(上):图形/文本界面安装
  4. 使用 Xmlrpc 来控制cobbler api
  5. linux下 proc 目录
  6. install tabix/bgzip
  7. ecshop将编辑器更换为kindeditor
  8. C++实现CString和string的互相转换
  9. SQL Server 表分区实战系列(文章索引)
  10. System.Transactions深入了解