前言

本篇文章将说明如何使用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私有方法相关推荐

  1. powermock私有字段_使用PowerMock的EasyMock私有方法模拟

    powermock私有字段 Sometimes we want to test a method that is using a private method. We can create the m ...

  2. java mock私有方法_JMockit Mock 私有方法和私有属性

    前面说过 JMockit 因身处前线,所以简直无不可,本节例子演示 JMockit 怎么 Mock 私有方法和私有属性,示例虽然是静态方法和属性,但因采用的是反射手法,所以这种 Deencapsula ...

  3. JMockit Mock 私有方法和私有属性

    JMockit Mock 私有方法和私有属性 时间 2014-02-03 15:02:39   隔叶黄莺Unmi Blog 原文  http://unmi.cc/jmockit-mock-privat ...

  4. java mock私有方法_java单元测试使用jMockit mock私有方法

    2014-02-14 06:30:02 阅读( 550 ) jMockit简直是万能的,私有方法也可以方便的做Mock.如下是mock私有方法的代码: 要测试的类 package cn.outofme ...

  5. jmockit教程_java单元测试使用jMockit mock私有方法,jmockitmock,jMockit简直是万能

    java单元测试使用jMockit mock私有方法,jmockitmock,jMockit简直是万能 jMockit简直是万能的,私有方法也可以方便的做Mock.如下是mock私有方法的代码: 要测 ...

  6. java mocked_java – 使用PowerMock的Mocked私有方法,但是底层方法仍然被调用

    我试图嘲笑嘲弄一个正在进行JNDI呼叫的私有方法.当从单元测试中调用该方法时,会抛出异常^.我想嘲笑这种方法进行测试.我使用了 sample code from another questions a ...

  7. PowerMockito Mock私有方法

    假设有类如下: public class MyClass {public void publicMethod() {......String result = privateMethod();.... ...

  8. powermockito测试私有方法_03 增强测试: 静态、私有方法处理

    mockito 已经很强大,能帮我们完成大部分 mock 工作,但是对于一些特殊方法来说,还是无能为力. 例如,当我们使用系统获取当前时间戳的时候,可能会调用 System.currentTimeMi ...

  9. java 单元测试 私有成员变量,单元测试时测试一个private私有方法 - - ITeye博客

    直接上例子 待测试的类 [code="java"]public class Calculator { private int count = 0; private int add( ...

最新文章

  1. onmousewheel
  2. 绑定Service的三种实现方式之使用Messenger
  3. unity 实现文本选中_Unity中如何读取TXT文本内容
  4. 【IDEA】自动导入无歧义的包
  5. android linux kernel VS standard linux kernel
  6. JS中的call()和apply()方法(转)
  7. ONNX系列五 --- 在C#中使用可移植的ONNX AI模型
  8. SQL语句(二)创建带主键和约束的数据表
  9. miniui中的相关问题
  10. 失业在家靠做PPT日赚800-1000元,有一门副业真的很重要!
  11. java环境变量的作用和含义_java环境变量的配置及各环境变量的含义 | 学步园
  12. 【PS基本操作】如何使用PS把图片背景去掉、透明背景
  13. QCC3020/QCC3040 TWS耳机按键切换EQ,APP切换EQ功能实现
  14. 关于django后台界面的美化
  15. VUE博客模板----FXBLOG
  16. 第二弹!python爬虫批量下载高清大图
  17. 【零信任落地案例】启明星辰中国移动某公司远程办公安全接入方案
  18. 【SRE笔记 2022.9.21 网络及TCP握手】
  19. 怎么让input控件,填充满td
  20. 大一计算机专业考什么证书,计算机专业大一的学生能考什么证书?

热门文章

  1. 全年涨幅超200%,来自东南亚的Sea Limited有何魔力?
  2. 人肉搜索酝酿灰色产业:首批淘客月入万元
  3. 桂林理工大学 程序设计实践课程 实习报告
  4. 正圆锥体空间方程_数值模拟偏微分方程的三种方法:FDM、FEM及FVM
  5. 网络层(ip地址划分以及路由)
  6. for(int i:nums){.....}的含义
  7. 《小鸡快跑》的成功故事
  8. 计算机视觉之旅(Day5)
  9. jquery中的data-icon和data-role
  10. android 屏幕统计,OffScreen - 屏幕时间统计