public String createUser() {
Session session = HibernateUtility.getSession();
Transaction tx = session.beginTransaction();
session.save(this);
tx.commit();
session.close();
return "accountCreated";
}
如何为此方法编写单元测试用例?
最佳答案
很难对包含静态方法调用的代码进行单元测试,例如 HibernateUtility.getSession()
。
您可能会考虑注入(inject) Session 实例(可能通过向 createUser()
方法添加参数,或者为包含此方法的对象提供一个 Session Factory
对象它可以用来获取 Session
实例)。然后,您可以使用 Mockito 或类似的框架向该方法提供模拟 Session
对象,并验证是否对其进行了预期的调用。
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();
}
关于java - 如何为该方法编写单元测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574392/