`
gigi_112
  • 浏览: 113219 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EasyMock问题总结

阅读更多

                                                               EasyMock问题总结

 

    最近开发中同事遇到过很多EasyMock的问题,也许有时候会怀疑easyMock是不是出了问题,其实99.99%的情况都是我们自己的代码出了问题,所以请认真的检查出错前后代码。

 

      1.

java.lang.IllegalStateException: missing behavior definition for the preceding method call getBidwordSequence()

       出现这样的错误请仔细检查getBidwordSequence()是void方法,还是有返回值,返回值的类型是不是写对了。

 

      2.

java.lang.IllegalStateException: 0 matchers expected, 1 recorded.
This exception usually occurs when matchers are mixed with raw values when recording a method:
	foo(5, eq(6));	// wrong
You need to use no matcher at all or a matcher for every single param:
	foo(eq(5), eq(6));	// right
	foo(5, 6);	// also right

      这个错误是要检查出错方法的前面方法是否多添加了匹配器(anyObject),尤其注意andReturn();easymock在andReturn()这个方法中入参不能是anyObject的。必须要给出方法的入参。

//错误写法
EasyMock.expect(subwayService.auditActivityRejected(EasyMock.anyObject(List.class)))
.andReturn(anyObject(List.class)
);

//正确写法
EasyMock.expect(subwayService.auditActivityRejected(EasyMock.anyObject(List.class)))
.andReturn(null 
);
 

 

      3.

1.EasyMock.expect(subwayService.auditActivityRejected




(EasyMock.anyObject(List.class))).andReturn(1);
2.EasyMock.expect(subwayService.auditActivityVerified


(EasyMock.anyObject(List.class))).andReturn(1);

     如果你原本希望录制脚本1,结果由于copy代码录制成了脚本2,这样你期待方法返回结果0,结果方法始终返回默认的0,而且由于你可能对于返回结果是0的抛出了自定义的异常,可怕的后果是verify就验证不了该方法,直接会显示你抛出的异常,如果不细心,这个错误还是很隐蔽的。所以录制的脚本一定要和调用的方法一致。

 

     4.

notifyFacade.addADGroup( isA(List.class));

//如果adgroup是空的,
java.lang.AssertionError: 
  Unexpected method call addADGroup(null):
    addADGroup(isA(java.util.List)): expected: 1, actual: 0
org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:45)

    isA和anyObject的区别 :如果出现了上述的错误,请看下你的方法传递参数的时候使用的isA(List.class),还是anyObject(List.class)的方法,这两个方法区别在于isA会调用instance of 方法,判断except时候的入参类型和实际是否相同,null instance of List 返回false,导致验证的失败,而使用anyObject则不会出现类似的问题。所以正确的写法如下

 

notifyFacade.addADGroup( anyObject(List.class))

 

    除了上述问题,还有谁碰上比较难受的异常的时候可以提交给我,总结到这个文档里面, 以后还有同事碰上类似问题可以先在这里找找解决方法。

 

分享到:
评论

相关推荐

    easyMock

    easyMock

    easymock-3.2.jar

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

    easyMock2.2.doc

    easyMock2.2

    easymock.jar,easymockclassextension.jar

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

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

    easymock2 EasyMock使用简明手册

    easymock的使用,含demo

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

    EasyMock 3.1相关jar(所有)

    还在为EasyMock使用时出异常而烦恼? 本压缩包包含除了Junit4之外easyMock3.1所用到的所有相关jar包,junit4可自己导入eclipse自带的即可 本压缩包包括: asm.jar cglib.jar objenesis.jar等 其中asm与cglib已兼容,放心...

    EasyMock

    NULL 博文链接:https://bruceliu02.iteye.com/blog/1775446

    模拟测试辅助工具easyMock.zip

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...

    easymock 的使用方法简介

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

    easymock-3.1.jar

    easymock需要用到的包,没有它不行,easymock-3.1.jar

    EasyMock 使用方法与原理剖析

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

    easymockclassextension-3.0.jar

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

    easymock-4.2.jar

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂...

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

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

    easymock-4.0-bundle

    EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定...

    easymock-request.getParamsNames

    easymock servlet 单元测试

    easymock.jar包

    easymock.jar包

    EasyMock 实例

    EasyMock 的文档还有简单实例 还有需要的jar包

    EasyMock 教程

    EasyMock使用教程,快来看看你还有什么秘密没有发现吧!

Global site tag (gtag.js) - Google Analytics