如何模拟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;
}
}
您没有提供试用版吗?你是什么意思**我没有发现任何有用的**?从这三个框架中选出一个,让我们知道你面临的挑战是什么?顺便说一下,我不是下来的选民:)它是一个有效的问题,你提供你正确地描述它与所有需要的信息。 –
目前我正在做一个学徒,我正在学TTD。我想测试setUpConnectionToDB()方法,所以它正确地建立了一个工作连接。是的,我可以通过连接我的本地MYSQL来测试它,但这不是重点。因为当我建立我的项目并部署它。 MYSQL将不会被测试。所以我试图嘲笑这种方法。不是即将发表的声明,我必须准备。或者不让这个任何派别? – DK1990
mock返回一个假对象,所以如果你模拟'DriverManager.getConnection()',你的'Connection'对象将是一个假对象,并且你将不能在该''Connection'对象上执行任何**真实**任务。在** Jan **建议的内存数据库中,如果您想要执行DB数据验证,那么该方法就行了。 –