自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JUnit 3.8 通過反射測(cè)試私有方法

開發(fā) 后端
本文演示了JUnit測(cè)試私有的兩種方法,第一是通過把目標(biāo)類的私有方法,第二是通過反射。詳細(xì)請(qǐng)看下文。

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

1)把目標(biāo)類的私有方法(修飾符:private)修改為(public),不推薦,因?yàn)樾薷牧嗽闯绦虿患?/p>

2)通過反射 (推薦)

 

代碼演示:

 

目標(biāo)程序

PrivateMethod.java

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

測(cè)試程序

PrivateMethodTest.java

  1. package com.junit3_8;  
  2.  
  3. import java.lang.reflect.Method;  
  4.  
  5. import junit.framework.Assert;  
  6. import junit.framework.TestCase;  
  7.  
  8. /**  
  9.  * 通過反射測(cè)試私有方法,  
  10.  *   
  11.  */ 
  12. public class PrivateMethodTest extends TestCase {  
  13.       
  14.     public void testAdd() throws Exception  
  15.     {  
  16.         //PrivateMethod pm = new PrivateMethod();  
  17.         //獲取目標(biāo)類的class對(duì)象  
  18.         Class<PrivateMethod> class1 = PrivateMethod.class;  
  19.           
  20.         //獲取目標(biāo)類的實(shí)例  
  21.         Object instance = class1.newInstance();  
  22.           
  23.         //getDeclaredMethod()  可獲取 公共、保護(hù)、默認(rèn)(包)訪問和私有方法,但不包括繼承的方法。  
  24.         //getMethod() 只可獲取公共的方法  
  25.         Method method = class1.getDeclaredMethod("add"new Class[]{int.class,int.class});  
  26.           
  27.         //值為true時(shí) 反射的對(duì)象在使用時(shí) 應(yīng)讓一切已有的訪問權(quán)限取消  
  28.         method.setAccessible(true);  
  29.           
  30.         Object result = method.invoke(instance, new Object[]{1,2});  
  31.           
  32.         Assert.assertEquals(3, result);  
  33.           
  34.       
  35.     }  
  36.  
  37. }  

小 結(jié):

getDeclaredMethod() 可獲取 公共、保護(hù)、默認(rèn)(包)訪問和私有方法,但不包括繼承的方法。

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

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

等價(jià)于

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

因?yàn)?Integer.TYPE 表示基本類型 int 的 Class 實(shí)例。

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

【編輯推薦】

  1. 探究Java初始化的過程
  2. 如何系統(tǒng)地學(xué)習(xí)JavaScript
  3. Java集合框架的知識(shí)總結(jié)
  4. Java與F#的并行程序處理對(duì)比
  5. Java并發(fā)編程之同步互斥問題
責(zé)任編輯:林師授 來源: hzc543806053的博客
相關(guān)推薦

2022-03-17 08:30:28

Python私有屬性私有方法

2023-09-16 19:38:17

Python私有屬性私有方法

2009-07-21 17:26:09

Scala本地函數(shù)

2011-08-16 10:35:59

Objective_C私有方法

2020-07-22 14:10:17

Chrome 84空閑檢測(cè)前端

2020-12-30 07:08:27

Java方法測(cè)試

2011-12-29 14:28:23

Java

2009-06-19 16:26:51

JUnit測(cè)試骨架

2011-03-30 16:54:13

JUnit

2013-01-07 13:54:17

Android開發(fā)JUnit單元測(cè)試

2024-03-07 09:37:45

C#表達(dá)式(樹)動(dòng)態(tài)方法

2009-07-15 17:49:09

Jython開發(fā)

2012-02-07 09:08:50

Feed4JUnitJava

2011-08-11 13:02:43

Struts2Junit

2017-01-14 23:26:17

單元測(cè)試JUnit測(cè)試

2017-01-16 12:12:29

單元測(cè)試JUnit

2011-11-18 15:18:41

Junit單元測(cè)試Java

2025-02-13 08:58:02

Gogomonkey函數(shù)

2021-01-07 14:06:30

Spring BootJUnit5Java

2010-04-13 10:49:32

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)