`

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入门

    在入门EasyMock时,首先需要了解的是模拟(mocking)的概念。模拟是为测试目的创建对象,这些对象的行为是可以预定义的。通过模拟,我们可以确保测试只关注于我们想要测试的代码部分,而不是外部依赖的影响。...

    EasyMock and PowerMock入门PPT

    【EasyMock介绍】 EasyMock是一个强大的Java库,用于创建模拟对象(Mock Objects),它使得单元测试变得更加简单。在测试过程中,模拟对象可以替代真实的依赖,这样我们就可以专注于测试单个方法,而不用担心其他...

    EasyMock

    EasyMock 是一个强大的Java模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以模拟复杂的交互场景。这个框架的出现,极大地简化了对那些难以或无法直接实例化的类的测试,比如接口或者静态方法。EasyMock...

    easyMock

    EasyMock 是一个强大的Java模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以模拟复杂的依赖关系。这个框架的出现使得测试更加简洁、独立,可以有效地验证代码的正确性,而无需运行实际的依赖服务或库。...

    easymock-3.2.zip

    它们可以作为起点,帮助初学者快速上手。 4. **所需jar包**:这是EasyMock运行所需的库文件。在Java项目中,你需要将这些jar包添加到类路径(classpath)中,以便在代码中引入并使用EasyMock的API。 使用EasyMock...

    EasyMock介绍和使用

    EasyMock可以帮助快速搭建测试环境,验证代码功能。 3. **复杂逻辑验证**:对于有复杂条件判断或流程控制的代码,EasyMock可以设置不同的调用顺序和返回值,以便全面检查各种可能的情况。 4. **减少环境影响**:在...

    easymock 的使用方法简介

    easymock 是一个开放源码的 mock 对象库,用于帮助开发者快速轻松地创建用于单元测试的 mock 对象。 EasyMock 使用动态代理,让开发者只需一行代码就能够创建任何接口的基本实现。 EasyMock 的使用可以帮助开发者...

    easymock.jar,easymockclassextension.jar

    Easymock是一个流行的Java单元测试框架,它允许开发者创建模拟对象来测试代码。这个框架使得测试更加简单,因为你可以模拟任何复杂的交互和行为,而无需实际运行依赖的组件。在给定的压缩包文件中,包含两个核心的...

    easymock

    这些内容不仅为初学者提供了良好的入门指导,也给经验丰富的开发者带来了进一步深化和巩固知识的机会。 《高性能JavaScript编程》则由Nicholas C. Zakas撰写,他不仅是ECMAScript Harmony项目的成员,也是一位在高...

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

    它可以帮助开发者快速定位问题,提高代码质量,减少回归测试的工作量。 总结来说,EasyMock 2.4是Java开发中的一个重要工具,它通过模拟对象简化了单元测试,使得测试更加可控和可读。通过阅读《EasyMock使用简明...

    EasyMock 实例

    EasyMock 是一个强大的Java模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以模拟复杂的系统交互。这个框架的使用可以极大地提高测试的效率和覆盖率,因为它使得测试代码可以独立于实际的依赖进行执行。 ...

    EasyMock 简介

    EasyMock 简介 EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库,旨在解决单元测试中的 Mock 对象构建问题。以下是 EasyMock 的详细介绍: 单元测试与 Mock 方法 单元测试是对应用中的某一...

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

    EasyMock是一款强大的模拟框架,主要用于Java单元测试。它允许开发者创建和控制对象的模拟行为,以便在测试过程中隔离被测试代码。在这个“EasyMock的安装与部署所需全部文件.zip”压缩包中,包含了在Windows环境下...

    easymock3.2 (文档+源码+例子)

    6. **示例**:压缩包中的示例提供了使用Easymock的实际代码,通过学习这些例子,你可以快速上手Easymock,并将它应用到自己的项目中。 7. **文档**:Easymock的文档详细介绍了如何安装、配置以及如何使用它的各种...

    Learning EasyMock3.0 By Official Example

    2. `GettingStartedGuide.pdf`:这个指南提供了快速上手的教程,指导开发者如何在项目中引入 EasyMock,并通过简单的例子展示如何进行单元测试。例如,使用 `EasyMock.expect()` 方法设定预期,然后调用 `EasyMock....

    easymock-2.5.2工具 下载

    EasyMock 是一个强大的开源工具,专门用于生成模拟对象(Mock Objects),在软件开发特别是单元测试领域,它扮演着至关重要的角色。这个工具的版本为2.5.2,提供了对Java编程语言的支持,使得开发者能够方便地创建和...

    easymock资料和源代码实例

    Easymock是一款强大的Java单元测试工具,它允许开发者创建模拟对象来协助测试代码。这款框架使得测试变得简单,因为它可以模拟任何接口的行为,而无需实际实现这些接口。下面我们将详细探讨Easymock的基本概念、工作...

    EasyMock 使用案例(含lib)

    EasyMock 是一个强大的开源Java模拟框架,用于进行单元测试。它允许开发者创建模拟对象来代替真实的依赖,以便在测试过程中可以完全控制它们的行为。在这个"EasyMock 使用案例(含lib)"中,我们将会深入探讨如何...

    easymock 3.0

    Easymock 3.0 是一个流行的Java模拟框架,用于进行单元测试。它使得开发者能够在测试代码中创建和控制对象的行为,以便于隔离被测试代码并确保其正确性。在单元测试中,Easymock允许我们创建mock对象,这些对象模仿...

Global site tag (gtag.js) - Google Analytics