前言

Whitebox可以用于方便的访问类内部的各种字段方法,是一个简单实用的基于反射的单元测试工具类。本篇文章将对Whitebox的常用方法进行介绍。关于使用PowerMock需要引入哪些依赖,请参考PowerMock使用-依赖准备。

正文

一. 设置对象私有字段

使用Whitebox可以方便的设置对象(静态)私有字段值。被测试类如下所示。

public class WhiteboxHelp {private boolean flag = true;public boolean isTrue() {return flag;}}

被测试类WhiteboxHelp有一个私有字段flag,同时WhiteboxHelpisTrue()方法会返回flag的值。测试类如下所示。

public class PowerMockTest {@Testpublic void whiteboxPrivateField() {WhiteboxHelp whiteboxHelp = new WhiteboxHelp();Whitebox.setInternalState(whiteboxHelp, "flag", false);assertThat(whiteboxHelp.isTrue(), is(false));}}

仅使用Whitebox时不需要添加@RunWith@PrepareForTest注解,同时对于上面例子如果flag是静态变量,那么设置静态变量值时需要使用Whitebox.setInternalState(WhiteboxHelp.class, "flag", false)

特别注意:如果WhiteboxHelpflag字段是静态的,则无法使用Whitebox设置flag字段的值。

二. 调用私有方法

使用Whitebox也可以方便的调用对象(静态)私有方法。被测试类如下所示。

public class WhiteboxHelp {private boolean isTrue() {return true;}}

测试类如下所示。

public class PowerMockTest {@Testpublic void whiteboxPrivateMethod() throws Exception {WhiteboxHelp whiteboxHelp = new WhiteboxHelp();assertThat(Whitebox.invokeMethod(whiteboxHelp, "isTrue"), is(true));}}

对于上面例子,如果isTrue()是静态私有方法,那么调用静态私有方法时的语句为:assertThat(Whitebox.invokeMethod(WhiteboxHelp.class, "isTrue"), is(true))

PowerMock使用-Whitebox相关推荐

  1. powermock模拟对象_使用PowerMock测试对象的内部状态

    powermock模拟对象 大多数单元测试都集中于测试对象的行为以证明其有效. 这可以通过编写一个JUnit测试来实现,该测试调用对象的公共方法,然后测试这些调用的返回值是否与先前定义的一组期望值匹配 ...

  2. 使用PowerMock测试对象的内部状态

    大多数单元测试都集中于测试对象的行为以证明其有效. 这可以通过编写一个JUnit测试来实现,该测试调用对象的公共方法,然后测试这些调用的返回值是否与先前定义的一组期望值匹配. 这是一种非常常见且成功的 ...

  3. mock java 反射,PowerMock,Mockito和反射api的最终类

    我正在尝试模拟java.lang.reflect.Method,这里是我的代码: @RunWith(PowerMockRunner.class) @PrepareForTest(Method.clas ...

  4. powermock 入门介绍及使用示例

    文章转自:https://blog.csdn.net/xiaoxufox/article/details/78562656 <dependency><groupId>junit ...

  5. JMockit、Mockito和Powermock介绍

    前言 最近看到公司项目里用到了JMockit的框架测试,结合以往使用的Mockito和PowerMock来分析一下三者分别是如何使用的. 一.JMockit使用 1. 引入依赖 <depende ...

  6. Java单元测试之模拟利器-使用PowerMock进行Mock测试

    首页 国产Linux Linux命令 openSUSE ArchLinux Slackware FreeBSD Ubuntu CentOS Fedora Debian PHP教程 在线教程 登录 注册 ...

  7. Android单元测试系列(3)-Mock之PowerMock

    目录 一.官网 二.Demo示例 三.PowerMock常用的测试方法 1. Private 1.1 私有变量 1.2 私有方法 2. Final 3. Static Android单元测试系列(3) ...

  8. 玩转Spring JUnit+mockito+powermock单元测试(使用详解)

    说明:请耐心看完... Spring中执行单元测试,最麻烦的就是解决Bean的定义以及注入的问题.最开始使用Spring的上下文初始化进行测试,开头是这样的: @RunWith(SpringJUnit ...

  9. 解决Jacoco和PowerMock不兼容的问题

    在使用PowerMock来写单元测试的时候,且单元测试里面下面的@PrepareForTest和@RunWith(PowerMockRunner.class)的时候,单元测试能成功跑出来,但是其生成的 ...

最新文章

  1. OpenCV Sobel Derivatives衍生物
  2. 语音合成与识别技术在C#中的应用 (转 )
  3. leetcode —— 1013. 将数组分成和相等的三个部分
  4. Python中的全局变量与局部变量2
  5. 数据结构与算法之间的关系
  6. amazon linux 用户名,如何在Amazon AWS上设置一台Linux服务器
  7. 【推荐系统】16篇最新推荐系统论文送你
  8. 异常信息_共同药业被爆:大客户异常 瞒报环保处罚信息
  9. 推荐子龙山人的emacs视频教程
  10. 小学计算机应用到英语课教案,信息技术在小学英语教学中的应用
  11. 使用metamask发起交易的时候,交易卡在pending了怎么办?
  12. 两个同级路由如何相互访问
  13. View和ViewGroup的概念
  14. css 实现一个尖角_请用CSS实现一个带尖角的正方形
  15. Java枚举(enum)
  16. JavaEE|IO、存储、硬盘、文件系统相关常识
  17. 吉大17秋计算机应用二,吉大17秋《计算机应用基础》在线作业二.doc
  18. leetcode 1723.完成所有工作的最短时间 - 二分+递归
  19. 2023年安徽省工业项目投资导向计划奖励补贴、入库申报类别范围
  20. Java从入门到精通十七(Stream 流)

热门文章

  1. 第三视角团队:项目UML设计(团队)
  2. 向淘宝生态圈看齐——阿里云“云合计划”
  3. shopify订单管理软件,获取订单方法
  4. php美元符号 perl,Perl运算符:$| ;美元符号加上加号
  5. 心愿作文计算机,心愿作文八篇
  6. 【2023unity游戏制作-mango的冒险】-6.关卡设计
  7. 第四部分-WebSocket后端轮询代替Ajax轮询
  8. OpenGL 纹理贴图
  9. nodejs+vue+elementui游戏新闻资讯网站管理系统
  10. python遍历字典的5种方法