0
public String createUser() {

    Session session = HibernateUtility.getSession();
    Transaction tx = session.beginTransaction();

    session.save(this);
    tx.commit();
    session.close();

    return "accountCreated";

}

このメソッドの単体テスト ケースの書き方

4

1 に答える 1

3

のような静的メソッドの呼び出しを含むコードを単体テストするのは困難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();
}
于 2012-07-20T07:07:32.220 に答える