`
tify
  • 浏览: 14685 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

对于EasyMock的介绍

 
阅读更多
EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。
EasyMock 可以mock interface和抽象java 类,但是不可以mock拥有被final修饰方法的类,不能mock静态方法(我遇到的情况是这样)。
在使用的时候请注意:
org.easymock.classextension.EasyMock 被用来mock抽象类(abstract)和具体类
org.easymock.EasyMock被用来mock接口(interface)

使用用EasyMock的一般步骤:
1.创建一个mock对象
HttpServletRequest request = EasyMock.createMock(HttpServletRequest.class);
2.设置此对象的某个方法的返回值
EasyMock.expect(request.getParameter("userName")).andReturn("trilogy").once();
注意:必须手工设置被mock的方法的访问次数
once()
antyTimes()
times(int)
建议:在设置方法调用次数的时候,虽然你可以调用anyTimes(),但是最好明确你要调用多少次如:once()、
times(2),这样做的话显的比较严谨。

如果mock的方法没有返回值,可以这么做:
request.setAttribute("userId");
EasyMock.expectLastCall().once();

对于被mock的方法参数,也可以不必指定具体的值:
EasyMock.expect(request.getParameter((String)EasyMock.anyObject())).andReturn("trilogy").once();

如果你想让被mock的方法返回一个异常,前提是被mock的方法会抛出异常,你可以这么做:
EasyMock.expect(input.read()).andThrow(new IOException("Mocked IOException")).once();

你还可以根据调用顺序来mock同一个方法:
EasyMock.expect(request.getParameter("userName")).andReturn("trilogy").once();
EasyMock.expect(request.getParameter("userName")).andReturn(null).once();
当第一次执行request.getParameter("userName")的时候,返回“trilogy”
当第二次执行request.getParameter("userName")的时候,返回null

3.保存被mock的对象
EasyMock.replay(a);

4.在被mock的对象被应用之后,最好验证一下我们所设置的mock对象是不是按我们预期运行。
EasyMock.verify(a);

总结:
EasyMock是一个相当方便的mock工具,可以为我们的测试工作提供极大的便利,特别是在测试web层或者数据库访问的时候。
在这里我只是抛砖引玉地介绍了一下EasyMock的使用,其实EasyMock还有很多其它更高级的使用,如过你愿意的话可以访问以下的网址来获得更多信息:
官网:www.easymock.org
参考文档:http://203.208.35.101/search?
q=cache:FeHb5AoQOtcJ:www.ibm.com/developerworks/cn/opensource/os-cn-
easymock/+org.easymock.classextension.EasyMock&hl=zh-CN&ct=clnk&cd=7&gl=cn&st_usg=ALhdy2-h7LnIiS-QtbTtdVRIN1oVBSsuew
分享到:
评论

相关推荐

    EasyMock介绍和使用

    IBM网站对EasyMock和使用场景的一些介绍

    EasyMock介绍及安装方法

    EasyMock 是一种模拟测试的框架,用于辅助模拟测试。当在测试过程中一些复杂的对象生成相当麻烦、费时或者根本无法生成时,可以用模拟的对象来代替真实的对象。 EasyMock 可以 mock 接口和 java 类,但是 class ...

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

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

    easymock的使用,含demo

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。 ...

    EasyMock and PowerMock入门PPT

    什么时候需要Mock对象 什么是EasyMock EasyMock的优点和缺点 运行EasyMock需要的资源 EasyMock的基本使用步骤 什么是PowerMock 运行PowerMock需要的资源 PowerMock的扩展功能

    EasyMock 使用方法与原理剖析

    EasyMock使用方法与原理剖析,详细的介绍了EasyMock的使用。

    easy-mock:前端数据模拟平台

    介绍 如果没有内网部署的条件,推荐使用。 Easy Mock 是一个可视化,并且能快速生成模拟数据的持久化服务。 特性 支持接口代理 支持快捷键操作 支持协同编辑 支持团队项目 支持 RESTful 支持 | OpenAPI ...

    单元测试之道java版

    基于java的单元测试,介绍了单元测试,单元测试例子,Right-BICEP,CORRECT,A-TRIP,MOCK,EasyMock等

    单元测试中的伪对象

    在单元测试的策略中伪对象被广泛使用。他从测试中分离了外部的不需要的因素并且帮助开发人员专注于被测试的功能。EasyMock是一个在这方面很...Mocquer介绍Mocquer基于Dunamis项目,被用来为特定的类或接口生成动态代理

    基于JavaScript的线上车位销售系统源码+sql数据库+项目说明.zip

    【资源介绍】 IDEA开发,JAVA编写,SSM框架 包管理使用Maven 采用Tomcat9.0.45服务器 数据库采用Mysql,可通过根目录下的.sql文件一键导入 前端部分使用axis上传合同签名 其余则是正常的bootstrap前端模板框架 使用...

    Google C++ Mock框架 googlemock使用介绍

     给大家介绍在测试中使用的利器googlemock,它是Google在2008年发布的一套针对C++的Mock框架,与googletest吸取JUnit的精华一样,的它灵感同样来自去Java社区的JMock、EasyMock等Mock思想。  更多关于google...

    使用JMockit编写java单元测试

    之前《有效使用Mock编写java单元测试》一文中层介绍过使用EasyMock和PowerMock来编写java单元测试,今天介绍一个更加强大的工具——JMockit。引用单元测试中mock的使用及mock神器jmockit实践中的java单元测试中各种...

    有效使用Mock编写java单元测试

    令人欣慰的是开源社区各种优秀的Mock框架让单元测试不再复杂,本文简单介绍EasyMock,PowerMock等的基本常用用法。Mock说白了就是打桩(Stub)或则模拟,当你调用一个不好在测试中创建的对象时,Mock框架为你模拟一...

    持续集成+单元测试实践

    为什么选择Untils作为本次项目单元测试框架呢?Unitils的优点和介绍网上都比较详细:...EasyMockModule:支持使用EasyMock的mock框架进行mock创建·InjectModule:支持注入mock对象到其

    my-example:我的文章的示例代码

    示例功能: 包括swagger介绍及文档生成说明,构建示例工程及配置描述,使用注解添加文档内容说明,使用全局参数进行接口认证。 文章: advance-sagger-demo 示例功能:包含对接口进行动态过滤,结合easymock进行数据...

    SpringCloudContract契约测试实践

    为了解决上述的弊端,研发团队通常会引入了单元测试,并使用EasyMock,Mokito等框架,来帮助开发人员在开发阶段暴露Bug.(对DB,Redis等依赖通常使用Docker来解决,与主题无关,这里暂时不做过多介绍.有兴趣的可以自己研究)...

    task_oa:任务管理人员管理oa办公小程序

    项目介绍 任务管理人员管理oa办公系统小程序 采用小程序原生语法,非常适合入门学习 模拟数据采用的EasyMock 目前为纯静态,服务器端接口开发中··· 项目相关文档,陆续传到这里... 敬请关注 在代码中标了更详细...

Global site tag (gtag.js) - Google Analytics