1. 程式人生 > >Hibernate初學者---Junit 測試String型別返回值

Hibernate初學者---Junit 測試String型別返回值

public class Item{

public String TypeName(){
    returen "A";
}
...


}

假設我們要測試返回值是否為“A”。

  • 首先NEW一個Item物件出來:Item item= new Item();
  • NEW一個通用型別變數,臨時裝載item物件. Class<?> clazz= item.getClass(); 其實就是複製item副本的過程,
  • NEW一個反射物件Field,引數指向clazz宣告的方法名“TypeName”,表示這個Field只儲存TypeName方法相關的引數!:Field field = clazz.getDeclaredField("TypeName");

  • 反射機制訪問許可權相關設定,必須這麼寫 field.setAccessible(true);

  • 由於我的Field限制為TypeName屬性範圍,所以,Field.get(object)方法中,傳入的 object 如果具有TypeName方法,它的值將被儲存。我們傳入item, 得到的將是item的TypeName方法,這個方法是有返回值的,所以我們用String引數接收這個返回值 。String string = (String)field.get(item);

  • 既然 我們已經拿到了TypeName的返回值 ,與我們希望得到的結果做個比較,就能知道它們是否equlse了。

assertEquals("A"
,string);
  • 就這樣就可以通過一個物件的影子對映到了這個物件的所有資訊了。這就是反射機制。