【问题标题】:Java - JUnit Test case for JDBC Connection - OracleJava - JDBC 连接的 JUnit 测试用例 - Oracle
【发布时间】:2020-10-07 21:37:07
【问题描述】:

我正在为 Oracle (OJDBC6.jar) 的 JDBC 连接编写 junit 测试用例。下面是我的代码

public void insertCard(){
Properties prop= new Properties();
properties.put("user","user");
properties.put("password","password");
properties.put("driver","com.oracle.OracleDriver")
 Connection con = DriverManager.getConnection ( 
         "jdbc:oracle:thin:@localhost:1521:orcl",properties);
      PreparedStatement insertCardValues = con.prepareStatement(
         "insert into card values(?,?,?)");
      
      insertCardValues.setInt(1,123);
      insertCardValues.setName(2,"Raja");
      insertCardValues.setAddress(3, "Lucknow");
      insertCardValues.executeUpdate();
}
}

谁能帮我测试下面的代码

Connection con = DriverManager.getConnection ( 
         "jdbc:oracle:thin:@localhost:1521:orcl","properties);

【问题讨论】:

    标签: junit


    【解决方案1】:

    首先,我建议您将关注点分开。

    1. 创建一个单独的对象,它应该负责向您返回一个连接。也许您可以创建自己的连接包装对象来处理 SQL 连接
    2. 然后负责插入卡的类可以检索打开的连接以创建语句。
    3. 别忘了还有一个方法可以在 insertCard 逻辑完成后释放连接(无论成功与否,将打开的连接保留在数据库中是很危险的)李>

    一旦您重构了代码,您就可以使用 Mockito 轻松地通过单元测试来覆盖它。但首先我认为你需要进行重构,否则测试会很痛苦

    【讨论】: