成都网站建设设计

将想法与焦点和您一起共享

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://chengdu.cdxwcx.cn/article/cdshdjo.html