單元測試代碼很難包含對靜態方法的調用,如HibernateUtility.getSession()
。
您可能會考慮注入Session實例(可能通過向createUser()
方法添加參數,或者通過爲包含此方法的對象提供一個可用於獲取Session
實例的對象)。然後,您可以使用Mockito或類似的框架爲該方法提供模擬對象,並驗證預期的調用方式。
public String createUser(Session session) {
Transaction tx = session.beginTransaction();
session.save(this);
tx.commit();
session.close();
return "accountCreated";
}
使用的Mockito,單元測試可能是這樣的:
public testCreateUser(){
Session session = mock(Session.class);
Transaction trans = mock(Transaction.class);
when(session.beginTransaction()).thenReturn(trans);
obj.createUser(session);
verify(session).save(obj);
verify(session).close();
verify(trans).commit();
}
你要考什麼?如果某些庫方法有效或沒有測試,則測試點不多......如果要測試createUser()方法的行爲,只需使用您的方法創建一個用戶,而不是搜索用戶,在測試完成後將其刪除。 – hovanessyan 2012-07-20 07:02:23