Junit 如何使用mockito调用枚举类型中的私有方法
在私有方法上编写Junit测试 如何调用枚举类型的私有方法,以及我需要模拟通过私有方法的参数传递的clientInstance???Junit 如何使用mockito调用枚举类型中的私有方法,junit,enums,mockito,Junit,Enums,Mockito,在私有方法上编写Junit测试 如何调用枚举类型的私有方法,以及我需要模拟通过私有方法的参数传递的clientInstance??? public enum SPHttpClient { ; private static fun(clientInstance) { HttpPost postRequest; /* some processing*/ clientInstance.execute(postRequest); // I need to moc
public enum SPHttpClient {
;
private static fun(clientInstance) {
HttpPost postRequest;
/* some processing*/
clientInstance.execute(postRequest);
// I need to mock this execute statement
}
}
我认为
getclass
不适用于枚举???调用的签名是invoke(objectobj,Object…args)
obj
必须是此对象的首选项。由于您的方法是静态的,因此没有此对象,您可以传递null,但不能忽略它,即以下工作:
SPHttpClient spHttpClient;
final Method method = spHttpClient.getClass().getDeclaredMethod("fun", HttpClient.class);
method.setAccessible(true);
Object actual = method.invoke(spHttpClient, mockHttpClient);
clientInstance
来自哪里?clientInstance
是HttpClient
对象的类型,它是通过使用spHttpClient.getClass()
将参数传递给fun
函数的,我们可以在枚举类型中获取方法吗?使用spHttpClient.class
。顺便说一下:这个问题与反射无关。如果这是您的问题,您最好提到发生了NullPointerException。
final Method method = SpHttpClient.class.getDeclaredMethod("fun", HttpClient.class);
method.setAccessible(true);
Object actual = method.invoke(null, mockHttpClient);