测试私有(private)的方法有两种:

锡林郭勒盟网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联建站2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
1)把目标类的私有方法(修饰符:private)修改为(public),不推荐,因为修改了源程序不佳
2)通过反射 (推荐)
代码演示:
目标程序
PrivateMethod.java
- package com.junit3_8;
 - public class PrivateMethod {
 - //私有方法
 - private int add(int a, int b)
 - {
 - return a +b ;
 - }
 - }
 
测试程序
PrivateMethodTest.java
- package com.junit3_8;
 - import java.lang.reflect.Method;
 - import junit.framework.Assert;
 - import junit.framework.TestCase;
 - /**
 - * 通过反射测试私有方法,
 - *
 - */
 - public class PrivateMethodTest extends TestCase {
 - public void testAdd() throws Exception
 - {
 - //PrivateMethod pm = new PrivateMethod();
 - //获取目标类的class对象
 - Class
 class1 = PrivateMethod.class; - //获取目标类的实例
 - Object instance = class1.newInstance();
 - //getDeclaredMethod() 可获取 公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
 - //getMethod() 只可获取公共的方法
 - Method method = class1.getDeclaredMethod("add", new Class[]{int.class,int.class});
 - //值为true时 反射的对象在使用时 应让一切已有的访问权限取消
 - method.setAccessible(true);
 - Object result = method.invoke(instance, new Object[]{1,2});
 - Assert.assertEquals(3, result);
 - }
 - }
 
小 结:
getDeclaredMethod() 可获取 公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
getMethod() 只可获取公共的方法
- Method method = class1.getDeclaredMethod("add", new Class[]{int.class,int.class});
 
等价于
- Method method = class1.getDeclaredMethod("add", new Class[]{Integer.TYPE,int.Integer.TYPE});
 
因为 Integer.TYPE 表示基本类型 int 的 Class 实例。
原文连接:http://blog.csdn.net/hzc543806053/article/details/7340546
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号