1.Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。同时也可以当调用别人的模块,而该模块又没有实现时(只提供接口),我们可以在独立的环境中测试自己的模块逻辑。

2.使用前的准备,下载所需的jar包:easymock-3.0.jar(或以上版本),junit-4.4.jar,cglib-nodep-2.1_3.jar

3.使用方法较简单。主要有以下步骤:

*•使用 EasyMock 生成 Mock 对象;
 *•设定 Mock 对象的预期行为和输出;
 *•将 Mock 对象切换到 Replay 状态;
 *•调用 Mock 对象方法进行单元测试;
 *•对 Mock 对象的行为进行验证。

测试实例:假如我有一个IStudent接口类和StudentApplication类,StudentApplication类中用到了IStudent中的没实现的方法,而我想测试StudentApplication,这时用EasyMock构造一个IStudent的Mock对象,并给要用到的的未实现的方法设定已知返回值。

code:

1 public interface IStudent {
2 public String doMethod1();
3 public String doMethod2();
4 public String doMethod3();
5
6 }
 1 public class StudentApplication {
2 IStudent student=null;
3 public StudentApplication(){
4
5 }
6
7 public String doMethod(){
8 String str1=student.doMethod1();
9 String str2=student.doMethod2();
10 String str3=student.doMethod3();
11 return str1+str2+str3;
12 }
13
14 public IStudent getStudent() {
15 return student;
16 }
17
18 public void setStudent(IStudent student) {
19 this.student = student;
20 }
21
22
23
24 }
 1 import main.IStudent;
2 import main.StudentApplication;
3
4 import org.easymock.EasyMock;
5 import org.junit.Assert;
6 import org.junit.Test;
7
8
9 public class testStudentApplication {
10 IStudent student;
11 StudentApplication application;
12 @Test
13 public void testdoMethod(){
14 //•使用 EasyMock 生成 Mock 对象;
15 student=EasyMock.createMock(IStudent.class);
16 //设定 Mock 对象的预期行为和输出
17 EasyMock.expect(student.doMethod1()).andReturn("a").times(1);
18 EasyMock.expect(student.doMethod2()).andReturn("b").times(1);
19 EasyMock.expect(student.doMethod3()).andReturn("c").times(1);
20 //将 Mock 对象切换到 Replay 状态
21 EasyMock.replay(student);
22 //调用 Mock 对象方法进行单元测试
23 application=new StudentApplication();
24 application.setStudent(student);
25 String getStr=application.doMethod();
26 //对 Mock 对象的行为进行验证
27 String cstr="abc";//正确的字符串
28 Assert.assertEquals(getStr, cstr);
29 EasyMock.verify(student);
30
31 }
32
33 }

EasyMock的使用的更多相关文章

  1. 测试--easymock的使用

    使用场景:对于调用其它类中的方法,但是还没有编写完,使用easymock进行单元测试,它提供这些没有编写完的代码期待的默认值. 使用步骤: step1: pom引入: <dependency&g ...

  2. Mock之easymock, powermock, and mockito

    easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...

  3. easymock所测试的方法内部新NEW对象的处理

    问题:当记录的方法的参数是方法所在类内部新NEW的对象时,静态的记录方法交互就会失效,例如 调用的方法: public calss A{ public void method(User u){ u.s ...

  4. easymock+junit+spring学习·

    Easymock学习                                Author:luojie 1.       Easymock简介 EasyMock 是一套通过简单的方法对于指定的 ...

  5. PowerMock与EasyMock的应用(转)

    Leader请求在做Junit测试的时辰,Mock掉各个办法之间的依附.这两天进修了下PowerMock的应用. PowerMock是EasyMock的一个扩大,参加了static,final,pri ...

  6. 窥探EasyMock(1)基础使用篇

    EasyMock的应用分为5步: 1. 使用 EasyMock 生成 Mock 对象: SomeInterface mockObj = createMock(SomeInterface.class); ...

  7. 窥探EasyMock(2)进阶使用篇

    from:http://www.iteye.com/topic/310313 1. 生成 Mock 对象 如何创建一个需要严格遵守调用顺序的mock对象? SomeInterface mockObj  ...

  8. easymock入门贴

    from:http://macrochen.iteye.com/blog/298032 关于EasyMock常见的几个问题, 这里(http://ozgwei.blogspot.com/2007/06 ...

  9. 使用 EasyMock 更轻松地进行测试

    from:http://www.ibm.com/developerworks/cn/java/j-easymock.html 测试驱动开发是软件开发的重要部分.如果代码不进行测试,就是不可靠的.所有代 ...

  10. EasyMock 使用方法与原理剖析

    from:http://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一 ...

随机推荐

  1. Smali语法简单介绍

    Smali语言其实就是Davlik的寄存器语言: Smali语言就是android的应用程序.apk通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件,文件的展示 ...

  2. 常见 core dump 原因分析signal 11 - SIGSEGV

    signal 6 - SIGABRT free 多次 char *p = malloc(100); free(p); free(p); fclose 多次 // fclose 内部调用 free FI ...

  3. C#流水号生成汇总(四)

    简单高效的ID生成方式 http://www.ikende.com/blog/6014522c24ff4ef89cfb430f9c5a8489 一个简单唯一ID生成规则 http://www.iken ...

  4. 报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState"

    报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState".   出错语句停留 ...

  5. 如何更改linux文件目录拥有者及用户组

    查看用户和组   1 首先对于经验操作之前,我们先看下当前系统下的用户和组.whoami 查看当前登陆用户 2 Passwd文件存储当前系统所有用户,而组文件/etc/group记录. 3 一个用户可 ...

  6. OSChina 周日乱弹 —— 超酷炫 58 页年终总结,笑喷!

    猿文:http://my.oschina.net/xxiaobian/blog/368981 借鉴一下以下的各种年终总结吧,总有适合你的... OSCer 们,小小编掐指一算,你命里真的缺我啊,赶紧给 ...

  7. 在IOS 模拟器中 输入中文

    模拟器默认的配置种没有“小地球”,只能输入英文.加入中文方法如下: 找到模拟器的Settings--->General-->Keyboard-->International KeyB ...

  8. pytest文档19-doctest测试框架

    前言 doctest从字面意思上看,那就是文档测试.doctest是python里面自带的一个模块,它实际上是单元测试的一种. 官方解释:doctest 模块会搜索那些看起来像交互式会话的 Pytho ...

  9. json和gson的区别

    json是一种数据格式,便于数据传输.存储.交换gson是一种组件库,可以把java对象数据转换成json数据格式 GSON简单处理JSON json格式经常需要用到,google提供了一个处理jso ...

  10. cgroup子系统2_devices子系统

    devices子系统用于控制cgroup中全部进程能够訪问哪些设备,三个控制文件:devices.allow,devices.deny,devices.list. devices.allow用于指定c ...