2012-12-06 108 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(); 
     } 
    } 
}