есть Connection pull
вот такой
import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class ConnectionPool {
private ConnectionPool() {
}
private static ConnectionPool instance = null;
public static ConnectionPool getInstance() {
if (instance == null)
instance = new ConnectionPool();
return instance;
}
public Connection getConnection() {
Connection con = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/paymentsdb");
con = (Connection) ds.getConnection();
} catch (NamingException | SQLException ex) {
ex.printStackTrace();
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
System.out.println(sw);
}
return con;
}
}
к нему есть контекст.
приложение работает нормально.
теперь хочу написать тесты к методам из класса DBManager работающие с базой данных. вот таким например
public static List<Report> getReports() throws SQLException {
List<Report> reports = new ArrayList<Report>();
PreparedStatement ps = null;
ResultSet rs = null;
Connection con=null;
try {
con = ConnectionPool.getInstance().getConnection();
ps = (PreparedStatement) con.prepareStatement(SQL_GET_ALL_REPORTS);
rs = ps.executeQuery();
while (rs.next()) {
reports.add(
new Report(rs.getString("data"), rs.getString("customer_email"), rs.getString("textreport")));
}
} finally {
close(rs);
close(ps);
close(con);
}
return reports;
}
но JUnit не понимает пула томката. и отказывается коннектится к базе
хочу подменить этот пул на обычный конекшен
public static Connection getConnection() throws SQLException {
String url = "jdbc:mysql://localhost:3306/paymentsdb?allowPublicKeyRetrieval=true";
Properties prop = new Properties();
prop.put("user", "root");
prop.put("password", "admin");
prop.put("useSSL", "false");
prop.put("serverTimezone", "UTC");
prop.put("characterEncoding", "UTF-8");
return DriverManager.getConnection(url, prop);
}
с помощью Mock. или может есть другой способ это правильно сделать?
подскажите пожалуйста. второй день бьюсь не работает никак.