`
xitong
  • 浏览: 6400674 次
文章分类
社区版块
存档分类
最新评论

EasyMock实践指南

 
阅读更多

EasyMock是个mock框架,用于动态产生mock对象,mock对象主要是用来模拟真实环境中的对象,原理上你应该为每个被依赖的接口准备mock对象,但那样实在太麻烦,无端的会产生很多mock类,所以EasyMock派上用场了!注意EasyMock2.0不能为非接口产生mock对象

EashMock的使用模式

1)记录

mockobj.someMethod();

2) 如果该方法有返回值,那么必须使用

EasyMock.expectLastCall().andReturn(xxxx);(不一定非得用这句话,但一定要有返回 值) xxx为被mock对象的someMethod()方法的期望返回值

3)回放(用于激活mock对象)

EasyMock.replay(mockobj);

实例如下:

package moxtv.central.service.impl;

import java.util.ArrayList;

import java.util.HashSet;

import java.util.List;

import java.util.Map;

import java.util.Set;

import junit.framework.TestCase;

import moxtv.central.dao.UploadMachineDao;

import moxtv.central.dao.UploadMachineJDBCDao;

import moxtv.central.po.UploadServer;

import org.easymock.EasyMock;

/**

* 上传机管理测试集.

*

* @author weip

* @time 2006-3-30 10:06:09

*

*/

public final class UploadMachineServiceTest extends TestCase {

/**

* 要测试的类.

*/

private UploadMachineServiceImpl uploadMachineService;

/**

* 测试对象依赖的对象

*/

private UploadMachineDao mockUploadMachineDao;

/**

* 测试对象依赖的对象

*/

private UploadMachineJDBCDao mockUploadMachineJDBCDao;

/**

*

* @param name

*

String

*/

public UploadMachineServiceTest(final String name) {

super(name);

}

/**

*

* @author weip

* @time 2006-3-30 10:10:18 (non-Javadoc)

* @see junit.framework.TestCase#setUp()

* @throws Exception

*

a

*

*/

protected void setUp() throws Exception {

super.setUp();

mockUploadMachineDao = (UploadMachineDao) EasyMock

.createMock(UploadMachineDao.class);

mockUploadMachineJDBCDao = (UploadMachineJDBCDao) EasyMock

.createMock(UploadMachineJDBCDao.class);

uploadMachineService = new UploadMachineServiceImpl();

uploadMachineService.setUploadMachineDao(mockUploadMachineDao);

uploadMachineService.setUploadMachineJDBCDao(mockUploadMachineJDBCDao);

}

/*

* protected void tearDown() throws Exception { super.tearDown(); }

*/

/**

* 测试登陆上传机管理首页.

*

* @author weip

* @throws Exception

*

a

* @time 2006-3-30 10:20:14

*/

public void testLoadMainPage() throws Exception {

UploadMachineVO vo = new UploadMachineVO ();

mockUploadMachineDao.query(vo );

EasyMock.expectLastCall().andReturn(new ArrayList());

mockUploadMachineDao.getTotalMachineCount();

EasyMock.expectLastCall().andReturn(new Integer(6));

EasyMock.replay(mockUploadMachineDao);

Map map = uploadMachineService.loadMainPage(vo );

assertNotNull(map);

assertNotNull(map.get("list"));

List list = (List) map.get("list");

assertEquals(0, list.size());

Integer sum = (Integer) map.get("sum");

assertNotNull(sum);

assertEquals(6, sum.intValue());

}

/**

* 测试获取上传机详情.

*

* @author weip

* @throws Exception

*

a

* @time 2006-3-30 11:14:33

*/

public void testGetMachine() throws Exception {

int serverId = 1;

mockUploadMachineDao.getMachine(serverId);

UploadServer us = createUploadServer();

EasyMock.expectLastCall().andReturn(us);

EasyMock.replay(mockUploadMachineDao);

UploadServer machine = uploadMachineService.getMachine(serverId);

assertEquals(1, machine.getId().intValue());

}

/**

* 测试添加上传机.

*

* @author weip

* @throws Exception

*

a

* @time 2006-3-30 10:09:42

*/

public void testAddMachine() throws Exception {

UploadServer server = createUploadServer();

mockUploadMachineDao.addMachine(server);

EasyMock.replay(mockUploadMachineDao);

uploadMachineService.addMachine(server);

EasyMock.verify(mockUploadMachineDao);

}

/**

* 测试删除上传机.

*

* @author weip

* @throws Exception

*

a

* @time 2006-3-30 10:55:28

*

*/

public void testDeleteMachines() throws Exception {

int[] serverids = new int[] {1 };

mockUploadMachineJDBCDao.deleteMachines(serverids);

EasyMock.replay(mockUploadMachineJDBCDao);

uploadMachineService.deleteMachines(serverids);

EasyMock.verify(mockUploadMachineJDBCDao);

}

/**

* 测试修改上传机.

*

* @author weip

* @throws Exception

*

a

* @time 2006-3-30 11:10:48

*/

public void testUpdateMachine() throws Exception {

mockUploadMachineDao.getMachine(1);

UploadServer destus = createUploadServer();

EasyMock.expectLastCall().andReturn(destus);

EasyMock.replay(mockUploadMachineDao);

UploadServer srcus = createUploadServer();

uploadMachineService.updateMachine(srcus);

EasyMock.verify(mockUploadMachineDao);

}

/**

* @author weip

* @time 2006-4-7 9:12:09

* @return UploadServer

*/

private UploadServer createUploadServer() {

UploadServer us = new UploadServer(new Integer(1));

Set set = new HashSet();

us.setDiskSet(set);

return us;

}

}

分享到:
评论

相关推荐

    EasyMock 使用方法与原理剖析

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

    Easy Mock 详解

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

    easymock-3.2.zip

    2. **doc文档**:这部分可能包含了项目的用户指南、开发者指南或设计理念等,帮助开发者更深入地理解EasyMock的工作原理和最佳实践。 3. **示例文档**:这些示例通常是一些简单的代码片段,展示了如何在实际项目中...

    Learning EasyMock3.0 By Official Example

    《EasyMock 3.0 学习指南:官方示例解析》 EasyMock 是一个流行的 Java 开发工具,用于创建和使用模拟对象进行单元测试。它通过提供一个简单易用的 API,使得开发者可以在测试中精确地控制对象的行为,从而确保代码...

    easymock-3.1

    文档部分应该包含了详细的使用指南和API参考,帮助你理解和应用EasyMock的各种功能。 总之,EasyMock 3.1是一个强大且灵活的模拟框架,它简化了Java单元测试中的对象模拟过程,提高了测试的效率和覆盖率。通过深入...

    Easymock 3.3.1

    **Easymock 3.3.1:深入理解与应用** Easymock 是一个流行的 Java 开发工具,主要用于创建模拟对象,帮助开发者在单元测试中隔离被...结合用户指南和源码学习,开发者可以更好地利用 Easymock 进行高效的单元测试。

    junit4资料

    ### JUnit4基础知识与实践指南 #### 一、JUnit4简介 JUnit4是JUnit框架的一个重要版本,它为Java开发者提供了强大的单元测试能力。相比于早期版本,JUnit4引入了多种新特性来简化测试代码的编写过程,并提高了测试...

    PowerMock学习指南

    **PowerMock学习指南** 在Java开发中,单元测试是一项至关重要的任务,它能...在"PowerMock学习指南.pdf"中,你会找到更多关于如何使用PowerMock的详细步骤和示例,包括如何配置、如何模拟各种情况以及最佳实践建议。

    books-powermock-unit-test

    "参考" 一词意味着这个压缩包可能包含了一些外部链接或者参考文档,这些文档可能提供了更深入的理论知识和实践指南。 "系统设置 (Mac)" 指出这个教程可能特别针对 macOS 用户,提供了在该操作系统环境下配置和运行...

    Manning.-.JUnit.in.Action.2nd.Edition_英文版PDF

    《JUnit in Action 2nd Edition》是一本专为软件开发者设计的指南,旨在深入解析JUnit这一流行的Java单元测试框架。本书由资深开发人员撰写,详细介绍了如何有效地利用JUnit进行测试驱动开发(TDD)和行为驱动开发...

    PowerMock实战手册

    《PowerMock实战手册》是一本专注于使用PowerMock进行单元测试的指南,结合了Junit测试框架和Mockito库,为开发者提供了全面的测试解决方案。在实际的软件开发中,单元测试是确保代码质量的重要环节,它能帮助我们找...

    jmock2.5.1.zip

    jMock 2.5.1.chm文件是一个帮助文档,包含了jMock框架的详细使用指南。通过这个文档,开发者可以学习如何创建和配置模拟对象,设置和验证期待,以及如何在JUnit等测试框架中集成jMock。 首先,创建模拟对象通常需要...

    powermock-demo:powermock演示

    PowerMock 是一个强大的 Java 模拟框架,它扩展了诸如 EasyMock 和 Mockito 这样的单元测试库的功能。在 Java 开发中,有时我们可能需要模拟静态方法、构造函数、final 类和方法、私有方法以及删除静态初始化器等,...

Global site tag (gtag.js) - Google Analytics