话说我们做的所谓的接口测试真的是不伦不类啊,测的是controller层,那叫接口木??!!可是老大们说写的是接口测试,那就接口吧!

自接手写这个接口测试不久,很多人,包括一个关系比较好的架构师就跟我说,写这个很麻烦啊,代码很乱,你得mock一堆。

既然已经跳进去了,那就游一会儿吧。为了mock,可谓想尽了办法啊,从一般的mock工具mockito,到java的反射,最后发现一个强大的工具——PowerMockito   他居然能够mock私有方法。虽然,最后被老大们说私有方法是不应该mock的,好吧,那我记录下总可以把,或许以后还是会用到呢。以下是一个例子:

//模拟 threadController的 doShowChildrens私有方法
    val postCountOf24HourMap= new HashMap[String, Int]()
    postCountOf24HourMap.put("1009",26)
    postCountOf24HourMap.put("1010",90)
    mav.addObject("postCountOf24HourMap", postCountOf24HourMap)

var childrensMap =new HashMap[String,ForumDynamicInfo]()
    val forumDynamicInfo:ForumDynamicInfo  = new ForumDynamicInfo
    forumDynamicInfo.setRssCount(50) //设置关注数
    childrensMap.put("1010",null)
    childrensMap.put("1009",forumDynamicInfo)
    mav.addObject("childrensMap",childrensMap)

var childrens = new LinkedList[Forum]()
    val childForum = new Forum
    childForum.setFid(1009)
    childForum.setName("测试版块")
    childForum.setDescription("记录下你的心情吧")
    childForum.setIcon("http://www.icon.com/icon.jpg")
    childForum.setIconUrl("http://www.19lou.com")
    val   moderator = new Moderator
    moderator.setUserName("版主")
    childForum.setModeratorList(List(moderator))
    childrens.add(childForum)
    mav.addObject("childrens",childrens)

PowerMockito.doReturn(mav).when(threadControllerSpy, "doShowChildrens",mav,forum);

http://blog.sina.com.cn/s/blog_6176c38201014dg1.html

用PowerMockito来mock私有方法(转)的更多相关文章

  1. 无所不能的PowerMock,mock私有方法,静态方法,测试私有方法,final类

    1.为什么要用mock 我的一本书的解释: (1)创建所需的DB数据可能需要很长时间,如:调用别的接口,模拟很多数据 (2)调用第三方API接口,测试很慢, (3)编写满足所有外部依赖的测试可能很复杂 ...

  2. PowerMock mock私有方法

    import java.util.Random; public class CodeWithPrivateMethod { public void meaningfulPublicApi() { if ...

  3. 使用PowerMockito和Mockito进行模拟测试,包括静态方法测试,私有方法测试等,以及方法执行的坑或者模拟不成功解决

    依赖:这个很重要,不同版本用法也有点区别: <dependency> <groupId>org.mockito</groupId> <artifactId&g ...

  4. powermockito “mock public 方法内部 Private方法的问题”

    我需要测试的方法是 public 方法: public ResponseResult subscribe(SysSubscription sysSubscription) throws JsonGen ...

  5. mock static方法

    <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mock ...

  6. iOS 私有变量 私有方法

    实例变量既可以在@interface中定义 也可以在@implementation中定义 在@implementation中的成员变量默认是私有的成员变量 并且和利用@private修饰的不太一样 在 ...

  7. iOS 运行时runtime控制私有变量以及私有方法

    OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ...

  8. 从vs2010的UnitTestFramework类库提取私有方法反射调用的方法

    背景 年龄大点的程序员都知道在vs2010中创建单元测试非常的简单,鼠标定位在方法名字,右键创建单元测试,就会创建一个测试方法,即使是在私有方法上也可以创建测试方法. VS2010以后就没这么简单了, ...

  9. 【原】iOS动态性(二):运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等)

    OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ...

随机推荐

  1. 前端笔试面试中的常用知识点总结(CSS)

    1.CSS选择器的优先级!important  > 内联 > id选择器 > 类选择器 > 标签选择器多个类选择器叠加(256)之后的优先级大于一个id选择器!importan ...

  2. 利用UICollectionView实现瀑布流

    利用UICollectionView实现瀑布流通过自定义布局来实现. - 自定义类继承UICollectionViewLayout: 必须重写的方法有: //决定每个item的位置: - (nulla ...

  3. [html5] canvas 绘图:八卦图

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. SpringMVC 详解

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  5. mbed 初试(LinkNode 板卡)(2016-04-21)

    前言 感谢论坛,感谢 LinkSrite,论坛活动申请了一个 LinkNode,体验了一下 mbed. 翻看完官方 wiki,大概了解了一下 mbed 的开发,然后做了 blink 和 pwm 的测试 ...

  6. ThinkPHP第三天(公共函数Common加载,dump定义,模板文件,定义替换__PUBLIC__)

    1.公共函数定义 自动加载:在项目的common文件夹中定义,公共函数文件命名规则为common.php,只有命名成common.php才能被自动载入. 动态加载:可以修改配置项‘LOAD_EXT_F ...

  7. wchar_t是内置还是别名(亲测有效:wchar_t在windows下是16位整数的别名,在linux等平台下是32位整数的别名。MSVC2008开始默认是/Zc:wchar_t)

    接前一篇C++ ABI之名字改编(以Qt为例),继续看看C++名字改编相关的问题. 问题 MSVC 有一对选项/Zc:wchar_t- 与 /Zc:wchar_t控制wchar_t 于是 wchar_ ...

  8. uva--11991 - Easy Problem from Rujia Liu?(sort+二分 map+vector vector)

    11991 - Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for e ...

  9. hibernate一对多关联关系

    想了几天,终于知道sql语句的发出问题.查了很多书,感觉都没有说清楚,有的还是错的.请看下面: <?xml version="1.0"?> <!DOCTYPE h ...

  10. Mysql 的一些基本用法

    一.增加字段 COMMENT '是否导入基础信息平台 1 是导入'; 二.删除字段 alter table `provincestudentinfo` drop column NativePlace; ...