最重要的事说在前面:遇到一个你不熟悉的知识,一定要去官网仔仔细细的看官方文档!一定要仔仔细细!一定要!(尔康鼻孔脸。。)

正篇:

一.使用

首先,当然是添加依赖,有人用maven,有人用ant或者mantis,每个人不一样,嗯,添加依赖。然后如果你需要mock一个类而不是接口的话,需要添加objenesis的依赖和jar包。(easymock3.0及以上适用)

二.你可能得事先了解的一些api

1.createControl,如果在你需要在相对复杂的测试用例中使用多个 Mock 对象,EasyMock 提供了另外一种生成和管理 Mock 对象的机制:

     @Before
protected void setUp() throws Exception {
super.setUp();
IMocksControl control = EasyMock.createControl();
servlet = new GetIdeationsServlet();
service = RollerFactory.getRoller().getUserManager();
request = control.createMock(HttpServletRequest.class);
response = control.createMock(HttpServletResponse.class);
session = control.createMock(HttpSession.class);
servletConfig = control.createMock(ServletConfig.class);
servletContext = control.createMock(ServletContext.class);
rollersession = control.createMock(RollerSession.class); servlet.init(servletConfig); }

IMocksControl 的对象,该对象能创建并管理多个 Mock 对象。

2.createMock, 就像上面代码所示,你创建了管理对象IMockControl,就可以通过它去mock你要mock的对象。

3.有了createControl和createMock,也会有createNiceControl,createStrictControl和createNiceMock和createStrictMock。那么它们之间究竟有啥区别呢?官方api是这么说的

aaarticlea/png;base64,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" alt="" />

懒,其实就是调用顺序检测不检测的问题。什么是调用顺序?什么是调用顺序检测?http://skydream.iteye.com/blog/829333

4.http://www.cnblogs.com/alipayhutu/archive/2012/05/21/2512363.html其他的问题这里总结的已经非常好了!

5.感谢以上两位博主。

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. git revert回退时提示One or more files are in a conflicted state

    解决代码冲突 如果commit时出现“You have to update your work copy first.”红色警告,说明版本库中的此文件已经被其他人修改了. 请先点“ok”按钮退出.执行 ...

  2. Package rdkafka was not found in the pkg-config search path.

    问题 在使用confluent-kafka-go 时遇到如下问题: $ go build t.go # pkg-config --cflags rdkafka Package rdkafka was ...

  3. 利用Python玩微信跳一跳

    创建python项目jump_weixin,新建python程序jump.py 需要4个辅助文件[adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll,fastboot.exe ...

  4. 为什么要使用MONO

    今天中午我收到一个Email,是关于以前写的一个MONO文章的疑问,我对此做了一些解释,希望与有相同问题的朋友一起分享一下,邮件内容如下: 我在网上找到了您写的一篇关于Mono的“在windows下使 ...

  5. Spark1.6 Idea下远程调试

    使用的开发工具:scala2.10.4.Idea16.JDK8 1.导入依赖的包和源码 在下载Spark中到的导入spark的相关依赖了包和其源码.zip,相关源码的下载地址:https://gith ...

  6. CefSharp v62修改,支持.net4.0

    吐槽一下,博客园久了没有上,账号没了,重新申请一个. cesharp v62版本,内核采用最新的Cef 62,支持最新的Grid布局. 由于官方的cefsharp 采用.net4.5.2开发.怎么办怎 ...

  7. DevExpress 组件

    最近看到 伍华聪 的博客里, DevExpress 组件那个效果很好看,特别是 LookUpEdit GridLookUpEdit 这两个控件,完美改善了 WinForm 里的 ComboBox 今天 ...

  8. dubbo无法创建线程问题

    OutOfMemoryError: unable to create new native thread 决定当前用户程序能够创建多少线程由2个因素决定 1. 用户环境允许的线程数 cat /etc/ ...

  9. python 模块被引用多次但是里面的全局表达式总共只会执行一次

    python 模块被引用多次但是里面的全局表达式总共只会执行一次

  10. javascript创建对象之构造函数模式(二)

    对上一章节的工厂模式进行代码重写 function Human(name, sex) { this.name = name; this.sex = sex; this.say = function ( ...