JUnit3.8通过反射测试私有方法

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

锡林郭勒盟网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联建站2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站

1)把目标类的私有方法(修饰符:private)修改为(public),不推荐,因为修改了源程序不佳

2)通过反射 (推荐)

代码演示:

目标程序

PrivateMethod.java

 
 
 
  1. package com.junit3_8;
  2. public class PrivateMethod {
  3.     //私有方法
  4.     private int add(int a, int b)
  5.     {       
  6.         return a +b ;
  7.         
  8.     }
  9. }

测试程序

PrivateMethodTest.java

 
 
 
  1. package com.junit3_8;
  2. import java.lang.reflect.Method;
  3. import junit.framework.Assert;
  4. import junit.framework.TestCase;
  5. /**
  6.  * 通过反射测试私有方法,
  7.  * 
  8.  */
  9. public class PrivateMethodTest extends TestCase {
  10.     
  11.     public void testAdd() throws Exception
  12.     {
  13.         //PrivateMethod pm = new PrivateMethod();
  14.         //获取目标类的class对象
  15.         Class class1 = PrivateMethod.class;
  16.         
  17.         //获取目标类的实例
  18.         Object instance = class1.newInstance();
  19.         
  20.         //getDeclaredMethod()  可获取 公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
  21.         //getMethod() 只可获取公共的方法
  22.         Method method = class1.getDeclaredMethod("add", new Class[]{int.class,int.class});
  23.         
  24.         //值为true时 反射的对象在使用时 应让一切已有的访问权限取消
  25.         method.setAccessible(true);
  26.         
  27.         Object result = method.invoke(instance, new Object[]{1,2});
  28.         
  29.         Assert.assertEquals(3, result);
  30.         
  31.     
  32.     }
  33. }

小 结:

getDeclaredMethod() 可获取 公共、保护、默认(包)访问和私有方法,但不包括继承的方法。

getMethod() 只可获取公共的方法

 
 
 
  1. Method method = class1.getDeclaredMethod("add", new Class[]{int.class,int.class});

等价于

 
 
 
  1. Method method = class1.getDeclaredMethod("add", new Class[]{Integer.TYPE,int.Integer.TYPE});

因为 Integer.TYPE 表示基本类型 int 的 Class 实例。

原文连接:http://blog.csdn.net/hzc543806053/article/details/7340546

网站栏目:JUnit3.8通过反射测试私有方法
转载来源:http://www.shufengxianlan.com/qtweb/news35/6235.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联