2012-12-06 137 views
2

我试图测试是否SessionFactory的是有效期至:测试是SessionFactory的有效

assertFalse(sessionFactory.isClosed()); 

但我的测试通过,即使在垫层数据源无法得到连接:

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

如何测试如果SessionFactory有效?

回答

2

好像你真的想测试你是否有有效的数据库连接。 SessionFactory只是一个包装,一旦配置它将工作,只要底层DataSource是好的。我们如何测试DataSource?首先,各种连接池允许您定义所谓的测试查询。通常为"SELECT 1"。如果您的数据库连接池没有公开这样的功能,只需从您的池中选择任何连接并运行类似的查询。

又见

+1

太好了!我直接测试了连接。谢谢! – OscarRyz

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(); 
     } 
    } 
}