`

easymock快速入门

 
阅读更多
easymock是众多mock之中的很容易用的mock,今天刚开始学习,来个简单的教程.以购物车结算为例子,比如首先是每一个商品项的pojo


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;
	}


  然后是购物车的:
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;
	}


   在这个购物车的计算中,在计算总价格方面,
total+= (store.getPrice(item.getName()) * item.getQuantity());
  这里,依赖了一个额外的对象store,根据store.getPrice()方法求出某个商品的单价,
但这里模拟的是现在根本不知道这个store 是如何实现的,有可能是第三方的,于是
easymock就派上用长了,它可以根据接口去模拟一个实现出来,下面直接看
ShoppingCartTest .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;
	}
    

   同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系列框架的大概原理就这样了,接下来就是深入的学习
  
5
5
分享到:
评论

相关推荐

    EasyMock and PowerMock入门PPT

    什么时候需要Mock对象 什么是EasyMock EasyMock的优点和缺点 运行EasyMock需要的资源 EasyMock的基本使用步骤 什么是PowerMock 运行PowerMock需要的资源 PowerMock的扩展功能

    easyMock

    easyMock

    EasyMock入门

    NULL 博文链接:https://huanglei4.iteye.com/blog/965761

    easyMock2.2.doc

    easyMock2.2

    easymock-3.2.jar

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。

    easymock.jar,easymockclassextension.jar

    还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 easymock.jar,easymockclassextension.jar

    EasyMock

    NULL 博文链接:https://bruceliu02.iteye.com/blog/1775446

    easymock2.4+EasyMock使用简明手册.pdf

    easymock2 EasyMock使用简明手册

    easymock的使用,含demo

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。 ...

    easymock 的使用方法简介

    easymock 的使用方法简介easymock 的使用方法简介

    EasyMock 3.1相关jar(所有)

    还在为EasyMock使用时出异常而烦恼? 本压缩包包含除了Junit4之外easyMock3.1所用到的所有相关jar包,junit4可自己导入eclipse自带的即可 本压缩包包括: asm.jar cglib.jar objenesis.jar等 其中asm与cglib已兼容,放心...

    模拟测试辅助工具easyMock.zip

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...

    easymock-3.1.jar

    easymock需要用到的包,没有它不行,easymock-3.1.jar

    EasyMock 使用方法与原理剖析

    EasyMock单元测试的扩展; EasyMock简介(抽象类接口做测试); EasyMock来进行测试; EasyMock如何打桩; EasyMock实践指南; EasyMock使用技巧; EasyMock使用简明手册; EasyMock使用说明; EasyMock使用手记; 用Mock ...

    easymockclassextension-3.0.jar

    easymockclassextension-3.0.jar org.easymock.classextension.EasyMock.

    easymock-4.2.jar

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂...

    easymock-4.0-bundle

    EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定...

    easymock-request.getParamsNames

    easymock servlet 单元测试

    EasyMock的安装与部署所需全部文件.zip

    windows环境部署easymock,有用到的全部文件和安装说明,包换node.js,redis,mongdb,easymock源码

    easymock.jar包

    easymock.jar包

Global site tag (gtag.js) - Google Analytics