如何在java中测试crud操作

时间:2016-06-01 17:58:58

标签: java testing crud

请解释我如何在java中测试CRUD操作:

public void insert(User user) {
    Connection con = null;
    PreparedStatement ps;
    try {
        con = DatabaseConnection.dbCon();
        ps = con.prepareStatement("insert into usert (name,surname,role_id,login,password) values(?,?,?,?,?)");
        ps.setString(1, user.getName());
        ps.setString(2, user.getSurname());
        ps.setInt(3, user.getRole().getId());
        ps.setString(4, user.getLogin());
        ps.setString(5, user.getPassword());
        ps.execute();
        if (con != null) {
            con.close();
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

/**
 * deletes user
 * @param user
 */
public void delete(User user) {
    Connection con = null;
    PreparedStatement ps;
    try {
        con = DatabaseConnection.dbCon();
        ps = con.prepareStatement("delete from usert where id = ?");
        ps.setInt(1, user.getId());
        ps.execute();
        if (con != null) {
            con.close();
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

现在,我为User等模型编写了单元测试。我不了解如何测试按钮和上面的其他操作。

1 个答案:

答案 0 :(得分:1)

实际上你的代码存在许多缺点。例如,您尝试在“try”块中关闭连接,而不是最终关闭。

无论如何,直到你的问题。 请注意,只有当您不使用标准的sql-syntaxis时,我的建议才会出现,这对于所有数据库都是通用的(它可以用于学习,但在现实生活中很少见)。除非你在学习JDBC,否则我还建议你看看像Hibernate这样的ORM。

为了测试数据库操作,您可以这样做:

  1. 创建一个非静态getConnection方法,触发您的DatabaseConnection.dbConn()
  2. 使用mockito库进行模拟,提供一些轻量级数据库,如hsql。
  3. 进行测试
  4. 因此,与数据库交互的逻辑将保持不变,唯一能够存储的就是存储。

    顺便说一句,没有必要以单独的方法提取DatabaseConnection.dbConn()。你可以使用power-mock,它可以正常工作。但我建议你先学习mockito。