概述
前言
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 {
@Test
public 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 {
@Test
public 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使用-Whitebox所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复