PowerMock: WhiteBox.getMethod():获取不带参数的私有方法



我需要在单元测试中访问一个没有参数的私有方法。似乎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);

相关内容

  • 没有找到相关文章

最新更新