Hibernate初學者---Junit 測試String型別返回值
阿新 • • 發佈:2019-02-11
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);
- 就這樣就可以通過一個物件的影子對映到了這個物件的所有資訊了。這就是反射機制。