2

SessionFactoryが有効かどうかを次の方法でテストしようとしました。

assertFalse(sessionFactory.isClosed());

しかし、基盤となるデータソースが接続を取得できなかった場合でも、私のテストは合格です。

java.sql.SQLException: Connections could not be acquired from the underlying database!

SessionFactoryが有効かどうかをテストするにはどうすればよいですか?

4

2 に答える 2

2

有効なデータベース接続があるかどうかを本当にテストしたいようです。SessionFactoryは単なるラッパーであり、一度構成すると、基盤が正常である限り機能しDataSourceます。

では、どのようにテストしDataSourceますか?まず、さまざまな接続プールを使用して、いわゆるテストクエリを定義できます。通常は"SELECT 1"。データベース接続プールがそのような機能を公開していない場合は、プールから接続を選択して同様のクエリを実行するだけです。

も参照してください

于 2012-12-06T20:35:13.130 に答える
1

@Tomasz Nurkieviczの回答後、私のテストコードは次のようになります。

@Test(description = "Test we can get the connection factory")
public void getApplicationSessionFactory() {
    SessionFactory sessionFactory = null;
    Session session = null;
    try {
        sessionFactory = createSessionFactory();
        session = sessionFactory.getCurrentSession();
        session.beginTransaction();
        session.doWork(new Work() {
        public void execute(Connection connection) throws SQLException {
            assertFalse(connection.isClosed());
        }
        });
    } finally {
        if ( session != null ) {
            session.close();
        }
        if (sessionFactory != null) {
            sessionFactory.close();
        }
    }
}
于 2012-12-06T21:04:39.087 に答える