• 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的介绍

  • 相关阅读:
    slf4j+log4j的使用
    <context:component-scan>详解
    Spring装配Bean---使用xml配置
    Spring应用上下文中Bean的生命周期
    bootstrap table 复选框选中后,翻页之后保留先前选中数据
    前后端分离的时代,如何解决前后端接口联调问题?
    利用vue-cli搭建vue项目
    vue之注册自定义的全局js函数
    小程序之图片上传
    微信小程序-蓝牙连接
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/8934450.html
Copyright © 2020-2023  润新知