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

使用EasyMock扩展为Class提供Mock对象

 
阅读更多

使用EasyMock扩展为Class提供Mock对象

Author:kongxx

通常我么在测试一些类的时候需要依赖另外一些类或接口,而此时可能这些类或接口可能仅仅是方法签名而没有真正的实现。此时我们就可以使用一些第三方类库来解决这个问题,比如常用的EasyMock,JMock等。但是这两个类库默认情况下都只能Mock接口,而不能Mock类,那么我们应该怎样解决这个问题呢?其实EasyMock和JMock两个框架也提供了对类作Mock的解决办法,不过这个功能需要他们提供的一个扩展类库才能实现。我们可以在他们的官方网站上下载这两个扩展。对于EasyMock下载EasyMock Class Extension 2.0_Pre-Release,对于JMock下载 jMock/CGLIB extension binary JAR。
下面是一个小例子:
Worker.java一个需要测试的业务类,它依赖一个抽象的Configuration对象.

class package easymock;

public class Worker {

private Configuration configuration;

public Configuration getConfiguration() {
return configuration;
}

public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
}

public boolean execute() {
String name = configuration.getName();
String type = configuration.getType();

if(name.equals("System") && type.equals("Snapshot")) {
// TODO

return true;
}
return false;
}
}

{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

Configuration.java一个抽象类,会有一些子类来实现它的抽象方法.

package easymock;

import java.io.File;

public abstract class Configuration {

protected String name;
protected String type;

public abstract Configuration configurate(File file);

public abstract String getName();

public abstract String getType();
}

WorkerTest.java一个测试类,需要用到Configuration对象实例,这里Mock了一个Configuration对象用来为execute方法提供支持.

package easymock;

import junit.framework.TestCase;
import org.easymock.classextension.*;

public class WorkerTest extends TestCase {
private Worker worker;
protected void setUp() throws Exception {
super.setUp();

worker = new Worker();
}

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

/*
* Test method for 'easymock.Worker.execute()'
*/
public void testExecute() {
Configuration conf = (Configuration)EasyMock.createMock(Configuration.class);
EasyMock.expect(conf.getName()).andReturn("System");
EasyMock.expect(conf.getType()).andReturn("Snapshot");

EasyMock.replay(conf);

worker.setConfiguration(conf);

// 执行带测试的方法
assertTrue(worker.execute());
}

}


运行JUnit测试,GreenBar。OK!

分享到:
评论

相关推荐

    easymock的使用,含demo

    EasyMock 是一套通过简单的方法对于指定的接口或...EasyMock 提供了根据指定接口动态构建 Mock 对象的方法,避免了手工编写 Mock 对象。本文将向您展示如何使用 EasyMock 进行单元测试,并对 EasyMock 的原理进行分析。

    easymock.jar,easymockclassextension.jar

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

    模拟测试辅助工具easyMock.zip

    EasyMock 是一套通过...EasyMock 提供了根据指定接口动态构建 Mock 对象的方法,避免了手工编写 Mock 对象。本文将向您展示如何使用 EasyMock 进行单元测试,并对 EasyMock 的原理进行分析。 标签:easyMock

    easymock-4.0-bundle

    手动的构造 Mock 对象会给开发人员带来额外的编码量,而且这些为创建 Mock 对象而编写的代码很有可能引入错误。目前,有许多开源项目对动态构建 Mock 对象提供了支持,这些项目能够根据现有的接口或类动态生成,这样...

    easymockclassextension-3.0.jar

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

    easymockclassextension-3.1

    扩展架包啊...easymockclassextension-3.1

    easymock-4.2.jar

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。...EasyMock 提供了根据指定接口动态构建 Mock 对象的方法,避免了手工编写 Mock 对象。

    easymockclassextension.jar

    easymockclassextension.jar

    EasyMock介绍及安装方法含安装方法和所有需要的软件包

    EasyMock 是一个用于生成模拟对象(Mock Object)的类库,主要用于单元测试。它提供了一种简单的方法来模拟接口或类的行为,使得在测试中可以模拟真实环境中的对象。 EasyMock 的主要特点包括: 简单易用:使用 ...

    EasyMock 使用方法与原理剖析

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

    easyMock3.1

    它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使...

    EasyMock介绍及安装方法

    EasyMock 是一种模拟测试的框架,用于辅助模拟测试。当在测试过程中一些复杂的对象生成相当麻烦、费时或者根本无法生成时,可以用模拟的...原因是 EasyMock 在实现时为每个 class mock 对象提供了内建的以上三个方法。

    easymockclassextension-2.4.jar

    easymockclassextension-2.4.jar是一个很齐全的jar包,可以放心下载使用

    easyMock resource

    EasyMock + junit 实例

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

    easymock2 EasyMock使用简明手册

    Easy Mock 详解

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

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

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

    easymock 的使用方法简介

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

    easymock-3.2.jar

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

Global site tag (gtag.js) - Google Analytics