您的位置:首页 > 其它

通过反射技术测试一个类的private…

2015-09-09 10:02 232 查看


通过反射技术测试一个类的private方法

新建一个简单的待测试类
package com.erquan.son;


public class PrivateMethod {

//私有方法

private int add(int a, int b) {

return a + b;

}

}

新建测试类
package com.erquan.son;


import static org.junit.Assert.*;


import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;


import org.junit.Test;



public class PrivateMethodTest {

@Test

public void testAdd() {

try {

PrivateMethod privateMethod = new PrivateMethod();


Class clazz = PrivateMethod.class; //通过反射技术获取类

Method method = null;

try {

method = clazz

.getDeclaredMethod("add", int.class, int.class); //获取类的方法,参数1为要获取的方法名字, 后面的参数为方法的参数

} catch (NoSuchMethodException e1) {

e1.printStackTrace();

}

method.setAccessible(true); //设置访问方法的权限,解除private属性的限制

Object result = null;

try {

result = method.invoke(privateMethod, new Object[] {20, 40});

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

}

assertEquals(60, result); //断言方法是否正确


} catch (SecurityException e) {

e.printStackTrace();

}


}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: