easymock笔记2

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 
ps:水平有限,难免有错,望不吝赐教,共同探讨! 对于EasyMock的介绍

posted on   luzhouxiaoshuai  阅读(287)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2017-04-24 黎活明8天快速掌握android视频教程--22_访问通信录中的联系人和添加联系人
2017-04-24 黎活明8天快速掌握android视频教程--21_监听ContentProvider中数据的变化
2017-04-24 黎活明8天快速掌握android视频教程--20_采用ContentProvider对外共享数据
2017-04-24 黎活明8天快速掌握android视频教程--19_采用ListView实现数据列表显示
2017-04-24 黎活明8天快速掌握android视频教程--18_在SQLite中使用事务
2017-04-24 黎活明8天快速掌握android视频教程--17_创建数据库与完成数据添删改查
2017-04-24 黎活明8天快速掌握android视频教程--16_采用SharedPreferences保存用户偏好设置参数

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示