Junit反射测试私有函数

导入包:Java.lang.Class

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.junit.Test;

Class clazz = Class.forName(""package"."java"");

//getConstructor(?):获取类的构造函数,?表示形参
Constructor con = clazz.getDeclaredConstructor(null);//私有方法

//设置私有构造函数的可见性
con.setAccessible(true);

//通过所获取的类的构造方法创建这个类的对象
Object obj=con.newInstance();

//Method x =clazz.getDeclaredField(String name):获取类的特定函数(包括私有)String name指定函数名
Method m = clazz.getDeclaredMethod("charAt", String.class,int.class);

//设置私有方法的可见性
m.setAccessible(true);

//实例化私有方法并获取返回值
Object result = m.invoke(obj,"abcd",0);

//获取类的私有成员变量
Field f=clazz.getDeclaredField("R");

//设置私有函数可见性
f.setAccessible(true);

猜你喜欢

转载自blog.csdn.net/Nrtostp/article/details/83210985