我试图测试是否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