我使用我的实现ServletContextListener
在servlet上下文中编写我的对象来处理数据库。在单元测试中,我的数据库处理程序工作但ServletContextListener
抛出java.sql.SQLException
中的相同代码。
这是我的数据库处理程序测试,它创建了与数据库的连接并且它正常工作。没有例外没问题。好的:
@Test
public void whenCreateDBJoinInstanceThenResultOfMethodGetDBExecutorNotNull() throws SQLException {
final DBJoint db = new DBJointHandler("database_scripts", "authentication_database");
Assert.assertNotNull(db);
db.closeConnection();
}
这与创建与数据库的连接使用相同的DBJoint
:
@WebListener
public class ContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
final ServletContext servletContext = servletContextEvent.getServletContext();
servletContext.setAttribute("db", new DBJointHandler("database_scripts", "authentication_database"));
}
...
}
这是我的结果:
java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/user_storage
抛出此例外的地方:
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(
properties.get("url"),
properties.get("username"),
properties.get("password")
);
}
这与测试中的代码完全相同。当我运行测试然后它没关系。当我使用ServletContextListener
时,它就是例外。
有什么不对?如何解决这个问题?谢谢。