如何使用mockito调用枚举类型中的私有方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用mockito调用枚举类型中的私有方法相关的知识,希望对你有一定的参考价值。
public enum SPHttpClient {
;
private static fun(clientInstance) {
HttpPost postRequest;
/* some processing*/
clientInstance.execute(postRequest);
// I need to mock this execute statement
}
}
在私人方法乐趣上写Junit测试,
如何调用ENUM类型的私有方法,我还需要模拟通过私有方法的参数传递的clientInstance?
SPHttpClient spHttpClient;
final Method method = spHttpClient.getClass().getDeclaredMethod("fun", HttpClient.class);
method.setAccessible(true);
Object actual = method.invoke(spHttpClient, mockHttpClient);
我认为getclass
不会用于枚举?
答案
调用的签名是invoke(Object obj, Object... args)
。 obj
必须是this-Object。由于你的方法是静态的,没有这个对象,你可以传递null,但你不能省略它,即下面的工作:
final Method method = SpHttpClient.class.getDeclaredMethod("fun", HttpClient.class);
method.setAccessible(true);
Object actual = method.invoke(null, mockHttpClient);
以上是关于如何使用mockito调用枚举类型中的私有方法的主要内容,如果未能解决你的问题,请参考以下文章
简单介绍如何使用PowerMock和Mockito来mock 1. 构造函数 2. 静态函数 3. 枚举实现的单例 4. 选择参数值做为函数的返回值(转)