日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JUnit3.8通過反射測試私有方法

測試私有(private)的方法有兩種:

錫林郭勒盟網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)建站。

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通過反射測試私有方法
網(wǎng)站地址:http://m.5511xx.com/article/cdshdjo.html