单元测试代码很难包含对静态方法的调用,如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