EasyMock问题总结
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(<span style="#ff6600;">anyObject(List.class)</span>
- );
- //正确写法
- EasyMock.expect(subwayService.auditActivityRejected(EasyMock.anyObject(List.class)))
- .andReturn(<span style="#ff6600;">null </span>
- );
3.
- 1.EasyMock.expect(subwayService.<span style="#ff6600;">auditActivityRejected</span>
- (EasyMock.anyObject(List.class))).andReturn(1);
- 2.EasyMock.expect(subwayService.<span style="#ff6600;">auditActivityVerified</span>
- (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进行单元测试,它提供这些没有编写完的代码期待的默认值. 使用步骤: step1: pom引入: <dependency&g ...
- Mock之easymock, powermock, and mockito
easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...
- easymock所测试的方法内部新NEW对象的处理
问题:当记录的方法的参数是方法所在类内部新NEW的对象时,静态的记录方法交互就会失效,例如 调用的方法: public calss A{ public void method(User u){ u.s ...
- easymock+junit+spring学习·
Easymock学习 Author:luojie 1. Easymock简介 EasyMock 是一套通过简单的方法对于指定的 ...
- PowerMock与EasyMock的应用(转)
Leader请求在做Junit测试的时辰,Mock掉各个办法之间的依附.这两天进修了下PowerMock的应用. PowerMock是EasyMock的一个扩大,参加了static,final,pri ...
- 窥探EasyMock(1)基础使用篇
EasyMock的应用分为5步: 1. 使用 EasyMock 生成 Mock 对象: SomeInterface mockObj = createMock(SomeInterface.class); ...
- 窥探EasyMock(2)进阶使用篇
from:http://www.iteye.com/topic/310313 1. 生成 Mock 对象 如何创建一个需要严格遵守调用顺序的mock对象? SomeInterface mockObj ...
- easymock入门贴
from:http://macrochen.iteye.com/blog/298032 关于EasyMock常见的几个问题, 这里(http://ozgwei.blogspot.com/2007/06 ...
- 使用 EasyMock 更轻松地进行测试
from:http://www.ibm.com/developerworks/cn/java/j-easymock.html 测试驱动开发是软件开发的重要部分.如果代码不进行测试,就是不可靠的.所有代 ...
- EasyMock 使用方法与原理剖析
from:http://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一 ...
随机推荐
- IOS设计模式之三(适配器模式,观察者模式)
本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ...
- Oracle buffer cache与相关的latch等待事件
buffer cache与相关的latch等待事件 1.buffer cache 2.latch:cache buffers lru chain 3.latch:cache buffers chain ...
- 删除特定影响因素(字段列)下的重复记录(MySQL)
;CREATE TABLE TabTest ( `id` ) NOT NULL AUTO_INCREMENT ,`factorA` ) NOT NULL DEFAULT ' ' ,`factorB` ...
- 看看JavaScript中void(0)的含义
JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. void 操作符用法格式如下:1. javascript:void (expression)2. javascr ...
- core文件分析
http://baidutech.blog.51cto.com/4114344/904419/ http://www.newsmth.net/pc/pccon.php?id=10001977& ...
- textBox只能输入汉字
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar > 0 && ...
- InputFormat 总结
在mr中的输入类,常见的InputFormat是TextInputFormat,也是mr默认的文件处理类,处理普通文本文件,作用是 1 每一行作为一个记录,将每一行在文件中的起始偏移量做为key,内容 ...
- strtok和strtok_r
1.strtok()函数的用法 函数原型:char *strtok(char *s, const char *delim); Function:分解字符串为一组字符串.s为要分解的字符串,delim为 ...
- 记一个社交APP的开发过程——基础架构选型(转自一位大哥)
记一个社交APP的开发过程——基础架构选型 目录[-] 基本产品形态 技术选型 最近两周在忙于开发一个社交App,因为之前做过一点儿社交方面的东西,就被拉去做API后端了,一个人头一次完整的去搭这么一 ...
- lego blocks
1.题目描述 https://www.hackerrank.com/challenges/lego-blocks 2.解法分析 这题乍看一下觉得应该可以用动态规划来做,但是却死活想不到最优子结构,在网 ...