通过反射技术测试一个类的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(); } } } |
相关文章推荐
- javascript文本对象
- javascript事件处理
- 线程的实现
- 在ubuntu12.10里成功安装qq!!
- SimpleDateFormat 类
- 内存流
- System.in流
- Java IO 操作
- 字节流、字符流
- 修改MyEclipse中的Jsp页面模…
- 大一的浑浑噩噩,大二的觉醒
- C++语言的设计与演化  读书笔记三
- C++语言的设计与演化 读书笔记二
- C++语言的设计与演化 读书笔记一
- Ubuntu 终端命令学习----浅…
- leetcode Missing Number
- 性能测试和数据分析的一点总结
- EntLib Unity父类的依赖注入问题
- view的setTag() 和 getTag()应用
- C++ 优先队列的简单实现