我需要在单元测试中访问一个没有参数的私有方法。似乎getMethod()的两个实现都要求参数类型作为最后一个参数。
有没有办法解决这个问题?
I have try:
WhiteBox.getMethod(myClass,"method",null);
使用powermock-reflect-1.5.5测试通过。
类:public class Util {
private void method() {}
private static void staticMethod() {}
}
测试:import static org.junit.Assert.assertNotNull;
import java.lang.reflect.Method;
import org.junit.Test;
import org.powermock.reflect.Whitebox;
public class UtilTest {
@Test
public void testMethod() {
Method method = Whitebox.getMethod(Util.class, "method");
assertNotNull(method);
}
@Test
public void testStaticMethod() {
Method method = Whitebox.getMethod(Util.class, "staticMethod");
assertNotNull(method);
}
}
在java.lang.Class中方法getMethod是
Method getMethod(String name, Class<?>... parameterTypes)
这意味着你可以调用
clazz.getMethod( "method" );
表示没有参数的方法。所以你的Whitebox方法可以叫做
Whitebox.getMethod(myClass,"method");
WhiteBox.getMethod(MyClass.class,"method",null);