3

Spring 3 で Hibernate 4 への移行に取り組んでいます。つまり、Spring の HibernateTemplate を使用できなくなりました。コードのリファクタリングは簡単でした (コールバックをセッションが使用される sessionFactory.getCurrentSession() に置き換える) が、単体テストで問題が発生しています。特に、DAO の完全なライブ統合テストが必要です。@Transactional は使用しません。

ただし、HibernateTemplate は、セッションが開いていない場合にセッションを開く手段を提供しなくなったため、「現在のスレッドのセッションが見つかりません」というメッセージが表示されます。セッションが開いていない場合、 sessionFactory.getCurrentSession() はセッションを開かないため、テストを実行すると。

テストで @Transactional を使用することに移行せずに、HibernateTemplate が提供していたものを複製するためにこれを回避する方法はありますか? 可能であるように思えますが、テストクラスに @Transactional で注釈を付けた場合にのみテストを機能させることができます (セッションを開くため)。

4

1 に答える 1

-2

Junitテストを使用する場合、それは非常に簡単です。

テストクラスでは、Springコンテキストをロードする必要があります。

@BeforeClass
public static void createApplicationContext(){      
    try {           
         applicationContext = new ClassPathXmlApplicationContext(
                new String[] {"applicationContext.xml"});           
         yourDao = (YourDao)applicationContext.getBean("YourDao");           
    } catch (Exception e) {
        Assert.assertNull(e);
    }
}

yourDao次に、テストロジックを使用および記述できます。

于 2013-01-16T12:20:00.480 に答える