当前位置:  开发笔记 > 编程语言 > 正文

如何模拟DriverManager.getConnection?

如何解决《如何模拟DriverManager.getConnection?》经验,为你挑选了1个好方法。

如何模拟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;
    }
}

Jan.. 5

一些注意事项:

Class.forName("com.mysql.jdbc.Driver");

从JDBC 4.0开始,这一行已经过时了.您应该能够在没有的情况下运行代码.或者如果你认为你需要它至少抽象它也可以

Class.forName(properties.getProperty("dbdriver", "com.mysql.jdbc.Driver");

一旦被照顾,谁说你必须嘲笑它?实际运行它要容易得多.

您也可以使用内存数据库(如h2)进行测试并检查代码.你要改变的只是你的url,user和passwd属性.

这将是与h2一起使用的一些示例属性:

dbdriver = org.h2.Driver
url = jdbc:h2:mem:test
user = sa
passwd = sa

这样,你不仅照顾您的单元测试的为setUpConnectionToDB(),但以后可以使用该期望在该数据库中的一些数据的方法该连接.



1> Jan..:

一些注意事项:

Class.forName("com.mysql.jdbc.Driver");

从JDBC 4.0开始,这一行已经过时了.您应该能够在没有的情况下运行代码.或者如果你认为你需要它至少抽象它也可以

Class.forName(properties.getProperty("dbdriver", "com.mysql.jdbc.Driver");

一旦被照顾,谁说你必须嘲笑它?实际运行它要容易得多.

您也可以使用内存数据库(如h2)进行测试并检查代码.你要改变的只是你的url,user和passwd属性.

这将是与h2一起使用的一些示例属性:

dbdriver = org.h2.Driver
url = jdbc:h2:mem:test
user = sa
passwd = sa

这样,你不仅照顾您的单元测试的为setUpConnectionToDB(),但以后可以使用该期望在该数据库中的一些数据的方法该连接.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有