我需要在单元测试中访问一个没有参数的私有方法。似乎getMethod()的两个实现需要参数类型作为最后一个参数。
有没有可以解决这个问题?
我试过了:
WhiteBox.getMethod(myClass,"method",null);
答案 0 :(得分:0)
在java.lang.Class中,getMethod方法是
Method getMethod(String name, Class<?>... parameterTypes)
这意味着您可以致电
clazz.getMethod( "method" );
对于没有参数的方法。因此可以调用您的Whitebox方法
Whitebox.getMethod(myClass,"method");
答案 1 :(得分:0)
此测试通过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);
}
}
答案 2 :(得分:-1)
WhiteBox.getMethod(MyClass.class,"method",null);