PowerMock使用-Mock私有方法
前言
本篇文章将说明如何使用PowerMock
对私有方法进行Mock
。关于使用PowerMock
需要引入哪些依赖,请参考PowerMock使用-依赖准备。
正文
被测试类如下所示。
public class MockPrivateMethod {public boolean isTrue() {return returnTrue();}private boolean returnTrue() {return true;}}
被测试类中有一个公共方法isTrue()
,在isTrue()
方法中会调用MockPrivateMethod
的私有方法returnTrue()
。测试类如下所示。
@RunWith(PowerMockRunner.class)
@PrepareForTest(MockPrivateMethod.class)
public class PowerMockTest {@Testpublic void mockPrivate() throws Exception {MockPrivateMethod mockPrivateMethod = PowerMockito.mock(MockPrivateMethod.class);PowerMockito.when(mockPrivateMethod, "returnTrue").thenReturn(false);PowerMockito.when(mockPrivateMethod.isTrue()).thenCallRealMethod();assertThat(mockPrivateMethod.isTrue(), is(false));}}
Mock
私有方法打桩时,需要使用PowerMockito.when(mock实例, "私有方法名").thenReturn(期望返回值)
的形式设置mock实例的私有方法的返回值,如果私有方法有参数,还需要在私有方法名后面添加参数占位符,比如PowerMockito.when(mock实例, "私有方法名", anyInt()).thenReturn(期望返回值)
。上面例子中进行断言时,调用私有方法采取了调用公共方法来间接调用私有方法的形式,单元测试代码对业务代码造成了入侵,因此如果仅仅只是为了验证一个私有方法,可以使用Whitebox
来方便的调用私有方法,如下所示。
public class MockPrivateMethod {private boolean returnTrue() {return true;}}@RunWith(PowerMockRunner.class)
@PrepareForTest(MockPrivateMethod.class)
public class PowerMockTest {@Testpublic void mockPrivate() throws Exception {MockPrivateMethod mockPrivateMethod = PowerMockito.mock(MockPrivateMethod.class);PowerMockito.when(mockPrivateMethod, "returnTrue").thenReturn(false);assertThat(Whitebox.invokeMethod(mockPrivateMethod, "returnTrue"),is(false));}}
PowerMock使用-Mock私有方法相关推荐
- powermock私有字段_使用PowerMock的EasyMock私有方法模拟
powermock私有字段 Sometimes we want to test a method that is using a private method. We can create the m ...
- java mock私有方法_JMockit Mock 私有方法和私有属性
前面说过 JMockit 因身处前线,所以简直无不可,本节例子演示 JMockit 怎么 Mock 私有方法和私有属性,示例虽然是静态方法和属性,但因采用的是反射手法,所以这种 Deencapsula ...
- JMockit Mock 私有方法和私有属性
JMockit Mock 私有方法和私有属性 时间 2014-02-03 15:02:39 隔叶黄莺Unmi Blog 原文 http://unmi.cc/jmockit-mock-privat ...
- java mock私有方法_java单元测试使用jMockit mock私有方法
2014-02-14 06:30:02 阅读( 550 ) jMockit简直是万能的,私有方法也可以方便的做Mock.如下是mock私有方法的代码: 要测试的类 package cn.outofme ...
- jmockit教程_java单元测试使用jMockit mock私有方法,jmockitmock,jMockit简直是万能
java单元测试使用jMockit mock私有方法,jmockitmock,jMockit简直是万能 jMockit简直是万能的,私有方法也可以方便的做Mock.如下是mock私有方法的代码: 要测 ...
- java mocked_java – 使用PowerMock的Mocked私有方法,但是底层方法仍然被调用
我试图嘲笑嘲弄一个正在进行JNDI呼叫的私有方法.当从单元测试中调用该方法时,会抛出异常^.我想嘲笑这种方法进行测试.我使用了 sample code from another questions a ...
- PowerMockito Mock私有方法
假设有类如下: public class MyClass {public void publicMethod() {......String result = privateMethod();.... ...
- powermockito测试私有方法_03 增强测试: 静态、私有方法处理
mockito 已经很强大,能帮我们完成大部分 mock 工作,但是对于一些特殊方法来说,还是无能为力. 例如,当我们使用系统获取当前时间戳的时候,可能会调用 System.currentTimeMi ...
- java 单元测试 私有成员变量,单元测试时测试一个private私有方法 - - ITeye博客
直接上例子 待测试的类 [code="java"]public class Calculator { private int count = 0; private int add( ...
最新文章
- onmousewheel
- 绑定Service的三种实现方式之使用Messenger
- unity 实现文本选中_Unity中如何读取TXT文本内容
- 【IDEA】自动导入无歧义的包
- android linux kernel VS standard linux kernel
- JS中的call()和apply()方法(转)
- ONNX系列五 --- 在C#中使用可移植的ONNX AI模型
- SQL语句(二)创建带主键和约束的数据表
- miniui中的相关问题
- 失业在家靠做PPT日赚800-1000元,有一门副业真的很重要!
- java环境变量的作用和含义_java环境变量的配置及各环境变量的含义 | 学步园
- 【PS基本操作】如何使用PS把图片背景去掉、透明背景
- QCC3020/QCC3040 TWS耳机按键切换EQ,APP切换EQ功能实现
- 关于django后台界面的美化
- VUE博客模板----FXBLOG
- 第二弹!python爬虫批量下载高清大图
- 【零信任落地案例】启明星辰中国移动某公司远程办公安全接入方案
- 【SRE笔记 2022.9.21 网络及TCP握手】
- 怎么让input控件,填充满td
- 大一计算机专业考什么证书,计算机专业大一的学生能考什么证书?
热门文章
- 全年涨幅超200%,来自东南亚的Sea Limited有何魔力?
- 人肉搜索酝酿灰色产业:首批淘客月入万元
- 桂林理工大学 程序设计实践课程 实习报告
- 正圆锥体空间方程_数值模拟偏微分方程的三种方法:FDM、FEM及FVM
- 网络层(ip地址划分以及路由)
- for(int i:nums){.....}的含义
- 《小鸡快跑》的成功故事
- 计算机视觉之旅(Day5)
- jquery中的data-icon和data-role
- android 屏幕统计,OffScreen - 屏幕时间统计