PowerMock使用-Whitebox
前言
Whitebox
可以用于方便的访问类内部的各种字段和方法,是一个简单实用的基于反射的单元测试工具类。本篇文章将对Whitebox
的常用方法进行介绍。关于使用PowerMock
需要引入哪些依赖,请参考PowerMock使用-依赖准备。
正文
一. 设置对象私有字段
使用Whitebox
可以方便的设置对象(静态)私有字段值。被测试类如下所示。
public class WhiteboxHelp {private boolean flag = true;public boolean isTrue() {return flag;}}
被测试类WhiteboxHelp
有一个私有字段flag,同时WhiteboxHelp
的isTrue()
方法会返回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)
。
特别注意:如果WhiteboxHelp
的flag字段是静态的,则无法使用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相关推荐
- powermock模拟对象_使用PowerMock测试对象的内部状态
powermock模拟对象 大多数单元测试都集中于测试对象的行为以证明其有效. 这可以通过编写一个JUnit测试来实现,该测试调用对象的公共方法,然后测试这些调用的返回值是否与先前定义的一组期望值匹配 ...
- 使用PowerMock测试对象的内部状态
大多数单元测试都集中于测试对象的行为以证明其有效. 这可以通过编写一个JUnit测试来实现,该测试调用对象的公共方法,然后测试这些调用的返回值是否与先前定义的一组期望值匹配. 这是一种非常常见且成功的 ...
- mock java 反射,PowerMock,Mockito和反射api的最终类
我正在尝试模拟java.lang.reflect.Method,这里是我的代码: @RunWith(PowerMockRunner.class) @PrepareForTest(Method.clas ...
- powermock 入门介绍及使用示例
文章转自:https://blog.csdn.net/xiaoxufox/article/details/78562656 <dependency><groupId>junit ...
- JMockit、Mockito和Powermock介绍
前言 最近看到公司项目里用到了JMockit的框架测试,结合以往使用的Mockito和PowerMock来分析一下三者分别是如何使用的. 一.JMockit使用 1. 引入依赖 <depende ...
- Java单元测试之模拟利器-使用PowerMock进行Mock测试
首页 国产Linux Linux命令 openSUSE ArchLinux Slackware FreeBSD Ubuntu CentOS Fedora Debian PHP教程 在线教程 登录 注册 ...
- Android单元测试系列(3)-Mock之PowerMock
目录 一.官网 二.Demo示例 三.PowerMock常用的测试方法 1. Private 1.1 私有变量 1.2 私有方法 2. Final 3. Static Android单元测试系列(3) ...
- 玩转Spring JUnit+mockito+powermock单元测试(使用详解)
说明:请耐心看完... Spring中执行单元测试,最麻烦的就是解决Bean的定义以及注入的问题.最开始使用Spring的上下文初始化进行测试,开头是这样的: @RunWith(SpringJUnit ...
- 解决Jacoco和PowerMock不兼容的问题
在使用PowerMock来写单元测试的时候,且单元测试里面下面的@PrepareForTest和@RunWith(PowerMockRunner.class)的时候,单元测试能成功跑出来,但是其生成的 ...
最新文章
- OpenCV Sobel Derivatives衍生物
- 语音合成与识别技术在C#中的应用 (转 )
- leetcode —— 1013. 将数组分成和相等的三个部分
- Python中的全局变量与局部变量2
- 数据结构与算法之间的关系
- amazon linux 用户名,如何在Amazon AWS上设置一台Linux服务器
- 【推荐系统】16篇最新推荐系统论文送你
- 异常信息_共同药业被爆:大客户异常 瞒报环保处罚信息
- 推荐子龙山人的emacs视频教程
- 小学计算机应用到英语课教案,信息技术在小学英语教学中的应用
- 使用metamask发起交易的时候,交易卡在pending了怎么办?
- 两个同级路由如何相互访问
- View和ViewGroup的概念
- css 实现一个尖角_请用CSS实现一个带尖角的正方形
- Java枚举(enum)
- JavaEE|IO、存储、硬盘、文件系统相关常识
- 吉大17秋计算机应用二,吉大17秋《计算机应用基础》在线作业二.doc
- leetcode 1723.完成所有工作的最短时间 - 二分+递归
- 2023年安徽省工业项目投资导向计划奖励补贴、入库申报类别范围
- Java从入门到精通十七(Stream 流)