のような静的メソッドの呼び出しを含むコードを単体テストするのは困難HibernateUtility.getSession()
です。
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();
}