JUnit 的独立数据源
Separate data sourse for JUnit
我有 JDBC dao(Servlet,不是 Spring),我想为 JUnit 设置单独的数据库 H2。
这是我的连接代码
public Connection getConnection() throws SQLException {
Connection con = null;
try {
Class.forName("org.postgresql.Driver");
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/library");
con = ds.getConnection();
} catch (NamingException ex) {
log.error("Cannot obtain a connection from the pool", ex);
} catch (ClassNotFoundException e) {
log.info("Error get driver in db! {}", e);
}
return con;
}
还有一种来自 DAO 的方法
public void delete(User object) throws BaseException {
try (PreparedStatement preparedStatement = DBWorker.getDbWorker().getConnection()
.prepareStatement(UserQueries.DELETE_USER)) {
preparedStatement.setLong(1, object.getId());
preparedStatement.executeUpdate();
} catch (SQLException e) {
String errorMessage = "Error delete User " + e.getMessage();
log.error(errorMessage);
throw new BaseException(e.getMessage());
}
}
代码DBWorker.getDbWorker().getConnection()
return连接数据库的单例对象。
如何在 Junit 中测试 delete
方法。我想要一个单独的数据库进行测试。在 Spring 中,我可以使用两个属性文件来执行此操作,一个用于开发,第二个用于测试。
已解决。
重新排序 DAO 类。添加构造函数
private Connection connection;
public AuthorService(Connection connection) {
this.connection = connection;
}
在我的 AbstractFactory 中,我推送连接所需的信息。因此,我可以使用单独的数据源
测试服务 类
我有 JDBC dao(Servlet,不是 Spring),我想为 JUnit 设置单独的数据库 H2。
这是我的连接代码
public Connection getConnection() throws SQLException {
Connection con = null;
try {
Class.forName("org.postgresql.Driver");
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/library");
con = ds.getConnection();
} catch (NamingException ex) {
log.error("Cannot obtain a connection from the pool", ex);
} catch (ClassNotFoundException e) {
log.info("Error get driver in db! {}", e);
}
return con;
}
还有一种来自 DAO 的方法
public void delete(User object) throws BaseException {
try (PreparedStatement preparedStatement = DBWorker.getDbWorker().getConnection()
.prepareStatement(UserQueries.DELETE_USER)) {
preparedStatement.setLong(1, object.getId());
preparedStatement.executeUpdate();
} catch (SQLException e) {
String errorMessage = "Error delete User " + e.getMessage();
log.error(errorMessage);
throw new BaseException(e.getMessage());
}
}
代码DBWorker.getDbWorker().getConnection()
return连接数据库的单例对象。
如何在 Junit 中测试 delete
方法。我想要一个单独的数据库进行测试。在 Spring 中,我可以使用两个属性文件来执行此操作,一个用于开发,第二个用于测试。
已解决。
重新排序 DAO 类。添加构造函数
private Connection connection;
public AuthorService(Connection connection) {
this.connection = connection;
}
在我的 AbstractFactory 中,我推送连接所需的信息。因此,我可以使用单独的数据源
测试服务 类