使用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 是一套通过简单的方法对于指定的接口或...EasyMock 提供了根据指定接口动态构建 Mock 对象的方法,避免了手工编写 Mock 对象。本文将向您展示如何使用 EasyMock 进行单元测试,并对 EasyMock 的原理进行分析。
还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 easymock.jar,easymockclassextension.jar
EasyMock 是一套通过...EasyMock 提供了根据指定接口动态构建 Mock 对象的方法,避免了手工编写 Mock 对象。本文将向您展示如何使用 EasyMock 进行单元测试,并对 EasyMock 的原理进行分析。 标签:easyMock
手动的构造 Mock 对象会给开发人员带来额外的编码量,而且这些为创建 Mock 对象而编写的代码很有可能引入错误。目前,有许多开源项目对动态构建 Mock 对象提供了支持,这些项目能够根据现有的接口或类动态生成,这样...
easymockclassextension-3.0.jar org.easymock.classextension.EasyMock.
扩展架包啊...easymockclassextension-3.1
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。...EasyMock 提供了根据指定接口动态构建 Mock 对象的方法,避免了手工编写 Mock 对象。
easymockclassextension.jar
EasyMock 是一个用于生成模拟对象(Mock Object)的类库,主要用于单元测试。它提供了一种简单的方法来模拟接口或类的行为,使得在测试中可以模拟真实环境中的对象。 EasyMock 的主要特点包括: 简单易用:使用 ...
EasyMock单元测试的扩展; EasyMock简介(抽象类接口做测试); EasyMock来进行测试; EasyMock如何打桩; EasyMock实践指南; EasyMock使用技巧; EasyMock使用简明手册; EasyMock使用说明; EasyMock使用手记; 用Mock ...
它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使...
EasyMock 是一种模拟测试的框架,用于辅助模拟测试。当在测试过程中一些复杂的对象生成相当麻烦、费时或者根本无法生成时,可以用模拟的...原因是 EasyMock 在实现时为每个 class mock 对象提供了内建的以上三个方法。
easymockclassextension-2.4.jar是一个很齐全的jar包,可以放心下载使用
EasyMock + junit 实例
easymock2 EasyMock使用简明手册
EasyMock单元测试的扩展; EasyMock简介(抽象类接口做测试); EasyMock来进行测试; EasyMock如何打桩; EasyMock实践指南; EasyMock使用技巧; EasyMock使用简明手册; EasyMock使用说明; EasyMock使用手记; 用Mock ...
windows环境部署easymock,有用到的全部文件和安装说明,包换node.js,redis,mongdb,easymock源码
easymock 的使用方法简介easymock 的使用方法简介
EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。