测试是SessionFactory有效

时间:2012-12-06 20:27:53

标签: java hibernate testing tdd

我尝试通过以下方式测试SessionFactory是否有效:

assertFalse(sessionFactory.isClosed());

但即使底层数据源无法建立连接,我的测试也会通过:

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

如何测试SessionFactory是否有效?

2 个答案:

答案 0 :(得分:2)

好像你真的想测试你是否有有效的数据库连接。 SessionFactory只是一个包装器,一旦配置完毕,只要基础DataSource正常就可以使用。

那么你如何测试DataSource?首先,各种连接池允许您定义所谓的测试查询。通常是"SELECT 1"。如果您的数据库连接池没有公开这样的功能,只需从池中选择任何连接并运行类似的查询。

另见

答案 1 :(得分: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();
        }
    }
}