如何模拟DriverManager.getConnection?
How to mock DriverManager.getConnection?
如何模拟 DriverManager.getConnection() 方法?
我想测试我的方法 setUpConnectiontoDB()
我尝试使用 PowerMock、easyMock 和 Mokito 本身。我没有找到任何有用的东西。
我的代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class MysqlDAO implements DAO {
private final Properties properties = new Properties();
public MysqlDAO(String configPath) {
loadProperties(configPath);
}
private Properties loadProperties(String configPath) {
try {
properties.load(new FileInputStream(configPath));
} catch (IOException e) {
e.printStackTrace();
}
return this.properties;
}
@Override
public Connection setUpConnectionToDB() {
try {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection(
properties.getProperty("url"),
properties.getProperty("user"),
properties.getProperty("passwd"));
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return null;
}
}
一些注意事项:
Class.forName("com.mysql.jdbc.Driver");
此行自 JDBC 4.0 以来已过时。你应该能够 运行 没有代码。或者,如果你认为你需要它,至少也可以抽象它来做
Class.forName(properties.getProperty("dbdriver", "com.mysql.jdbc.Driver");
一旦解决了这个问题,谁说你必须嘲笑它?实际上 运行 它要容易得多。
您也可以使用内存数据库(如 h2)进行测试并为此检查您的代码。您需要更改的只是您的 url、用户和密码属性。
这是与 h2:
一起使用的一些示例属性
dbdriver = org.h2.Driver
url = jdbc:h2:mem:test
user = sa
passwd = sa
这样,您不仅可以为 setUpConnectionToDB() 处理 unit-test,而且以后可以 使用 该连接用于需要该数据库中某些数据的方法。
如何模拟 DriverManager.getConnection() 方法?
我想测试我的方法 setUpConnectiontoDB()
我尝试使用 PowerMock、easyMock 和 Mokito 本身。我没有找到任何有用的东西。
我的代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class MysqlDAO implements DAO {
private final Properties properties = new Properties();
public MysqlDAO(String configPath) {
loadProperties(configPath);
}
private Properties loadProperties(String configPath) {
try {
properties.load(new FileInputStream(configPath));
} catch (IOException e) {
e.printStackTrace();
}
return this.properties;
}
@Override
public Connection setUpConnectionToDB() {
try {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection(
properties.getProperty("url"),
properties.getProperty("user"),
properties.getProperty("passwd"));
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return null;
}
}
一些注意事项:
Class.forName("com.mysql.jdbc.Driver");
此行自 JDBC 4.0 以来已过时。你应该能够 运行 没有代码。或者,如果你认为你需要它,至少也可以抽象它来做
Class.forName(properties.getProperty("dbdriver", "com.mysql.jdbc.Driver");
一旦解决了这个问题,谁说你必须嘲笑它?实际上 运行 它要容易得多。
您也可以使用内存数据库(如 h2)进行测试并为此检查您的代码。您需要更改的只是您的 url、用户和密码属性。
这是与 h2:
一起使用的一些示例属性dbdriver = org.h2.Driver
url = jdbc:h2:mem:test
user = sa
passwd = sa
这样,您不仅可以为 setUpConnectionToDB() 处理 unit-test,而且以后可以 使用 该连接用于需要该数据库中某些数据的方法。