我試圖測試是否SessionFactory的是有效期至:測試是SessionFactory的有效
assertFalse(sessionFactory.isClosed());
但我的測試通過,即使在墊層數據源無法得到連接:
java.sql.SQLException: Connections could not be acquired from the underlying database!
如何測試如果SessionFactory有效?
我試圖測試是否SessionFactory的是有效期至:測試是SessionFactory的有效
assertFalse(sessionFactory.isClosed());
但我的測試通過,即使在墊層數據源無法得到連接:
java.sql.SQLException: Connections could not be acquired from the underlying database!
如何測試如果SessionFactory有效?
好像你真的想測試你是否有有效的數據庫連接。 SessionFactory
只是一個包裝,一旦配置它將工作,只要底層DataSource
是好的。我們如何測試DataSource
?首先,各種連接池允許您定義所謂的測試查詢。通常爲"SELECT 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();
}
}
}
太好了!我直接測試了連接。謝謝! – OscarRyz