【问题标题】:Use another database for test使用另一个数据库进行测试
【发布时间】:2016-04-05 18:46:24
【问题描述】:

我有一个使用 oracle 的程序。 我想对完成的查询进行一些测试。 db测试是HSQLDB。

public class UserDAODataAccess {
    private Connection connection;

    private void getConnection() throws MMException {
        connection = AutoExternalServices.getDatabase().newConnection();
    }


    List<User> getUser(){
        getConnection();
        ...
    }
}   

在测试中是否可以绕过当前的getConnection,获取另一个db的连接?

【问题讨论】:

  • 你在你的应用程序中做纯 JDBC 吗?还是您使用持久性框架?如果有,是哪一个?
  • 那么AutoExternalServices.getDatabase()的代码是什么?
  • 连接设置
  • 这是依赖注入的确切的整点

标签: java testing junit mocking


【解决方案1】:

在用测试连接替换AutoExternalServices 中的Connection 时遇到困难,应该敲响警钟。通常这些困难来自糟糕/次优的设计。

在您的情况下,如果可以,我建议您提供 Connection 作为构造函数参数并删除 getConnection() 方法。这将使您可以轻松地将 Connection 替换为您的测试。

至于绕过getConnection(),有各种各样的“黑客”可以做到这一点,包括打开系统属性,覆盖特殊测试类中的方法,...

但我不会推荐任何一个 ...

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2019-04-18
    • 2011-06-02
    • 2022-08-02
    • 2014-08-02
    • 2021-04-14
    • 2012-04-22
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多