用PowerMockito来mock私有方法(转)

简介:  话说我们做的所谓的接口测试真的是不伦不类啊,测的是controller层,那叫接口木??!!可是老大们说写的是接口测试,那就接口吧!     自接手写这个接口测试不久,很多人,包括一个关系比较好的架构师就跟我说,写这个很麻烦啊,代码很乱,你得mock一堆。

 

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

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

   既然已经跳进去了,那就游一会儿吧。为了mock,可谓想尽了办法啊,从一般的mock工具mockito,到java的反射,最后发现一个强大的工具——PowerMockito   他居然能够mock私有方法。虽然,最后被老大们说私有方法是不应该mock的用PowerMockito来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

 

相关文章
|
fastjson 前端开发
巧用fastjson自定义序列化类实现字段的转换
项目中突然需要增加另一个字段的查找,而这个查找需要查另一张表的记录。 但现在产品很多地方都要增加该字段,如何最快的实现该功能呢。 办法如下: 通过fastjson序列化时,增加该字段的序列化类,该序列化类通过CODE查找名称,并序列化到前端。
6071 0
|
关系型数据库 MySQL Linux
CentOS7上安装nacos并给nacos配置MySQL数据库
CentOS7上安装nacos并给nacos配置MySQL数据库
1140 0
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
1871 2
|
机器学习/深度学习 人工智能 自然语言处理
AI初探:人工智能的定义、历史与未来展望
【7月更文第15天】在科技飞速发展的今天,人工智能(Artificial Intelligence, AI)已经成为推动社会进步的关键力量,渗透到我们生活的方方面面,从智能家居到自动驾驶汽车,从精准医疗到智能金融,无不展现出其深远的影响。本文旨在为读者揭开人工智能的神秘面纱,从基本概念出发,回顾其发展历程,并探索未来的无限可能。
1857 2
|
算法 Java UED
详解 Java 限流接口实现问题之滑动窗口限流算法的缺点如何解决
详解 Java 限流接口实现问题之滑动窗口限流算法的缺点如何解决
387 0
|
网络协议
IPTables六—— IPTable规则优化IPSet
六、IPSet iptables在进行包过滤的时候,对每个数据包都过滤一遍iptables中的规则。假设我们有如下三条规则: -s 1.1.1.1 -p tcp accpet -s 2.2.2.2 -p tcp accpet -s 3.3.3.3 -p tcp accpet 那么当一个数据包源地址是3.3.3.3的时候,它首先去匹配第一条规则,不匹配再匹配第二条,最后在第三条匹配中了。
1497 0
|
SQL Java 数据库连接
MyBatis-plus最详细的入门使用教程来了
MyBatis-Plus (简称 MP,下文就使用简称啦)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。官网地址:https://baomidou.com/ 有以下特性:
3114 0
MyBatis-plus最详细的入门使用教程来了
|
中间件 Go API
Gin文件上传与下载 | 青训营笔记
Gin文件上传与下载 | 青训营笔记
964 0
|
测试技术 数据库 Python
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好,好歹自己鼓 捣出了,但是时间和效率并不是很高,下次遇到还是老样子。那么本篇通过最简单案例来给给为小伙伴详细讲解、演示一下 unittest 执行顺序。
387 0
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
|
Java 开发者
每天一道面试题之-AQS
每天一道面试题之-AQS
375 0