私は単純なクラスをテストしようとしています:
public class GenericDAO {
    @Autowired
    protected SessionFactory sessionFactory;
    public <T> Serializable create(final T o) {
        return sessionFactory.getCurrentSession().save(o);
    }
    @SuppressWarnings("unchecked")
    public <T> T find(final Class<T> cl, final long id) {
        return (T) sessionFactory.getCurrentSession().get(cl, id);
    }
    @SuppressWarnings("unchecked")
    public <T> T update(final T o) {
        return (T) sessionFactory.getCurrentSession().merge(o);
    }
    public <T> void delete(final T o) {
        sessionFactory.getCurrentSession().delete(o);
    }
    @SuppressWarnings("unchecked")
    public <T> List<T> getAll(final Class<T> cl) {
        return (List<T>) sessionFactory.getCurrentSession()
                .createCriteria(cl).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
    }
}
私のテストクラスでは、 @Before を使用してセッションを作成し、テスト用のデータベースに入力します。次のようになります。
    @Autowired
    protected SessionFactory sessionFactory;    
    @Before
    public void setUp() {
        Session session = sessionFactory.getCurrentSession();
        session.save(user);
        session.save(user1);
        session.save(user2);
        session.flush();
        // Otherwise the query returns the existing order 
        session.clear();
    }
私にとっては、 @BeforeClass を使用して db を埋める方が良いです。これは、クラスの開始時にテスト日を 1 回だけ作成する必要があるためです。ただし、このメソッドは静的でなければならないため、sessionFactory をオートワイヤーできません。それで、これに対する最善の解決策は何ですか?