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 回答