Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中测试crud操作_Java_Testing_Crud - Fatal编程技术网

如何在java中测试crud操作

如何在java中测试crud操作,java,testing,crud,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,passw

请解释我如何在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();
    }

}

现在,我为用户等模型编写了单元测试。我不知道如何测试按钮和上述其他操作。

实际上,您的代码有很多缺点。例如,您正在尝试关闭“try”块中的连接,而不是finally

不管怎样,由你的问题决定。 请注意,我的建议只有在您不使用标准sql语法时才有意义,这种语法对于所有数据库都是通用的(这对于学习来说是可以的,但在现实生活中是很少见的)。除非您正在学习JDBC,否则我还建议您看看类似Hibernate的ORM

要测试数据库操作,可以执行以下操作:

  • 创建一个非静态的
    getConnection
    方法,该方法触发您的
    DatabaseConnection.dbConn()
  • 使用库模拟它,提供一些轻量级数据库,如hsql
  • 做你的测试
  • 因此,与数据库交互的逻辑将保持不变,唯一可以保存的是存储


    顺便说一句,不需要用单独的方法提取
    DatabaseConnection.dbConn()
    。您可以使用powermock,它会很好地工作。但我建议你先学习mockito。

    理想情况下,不要。使用JPA为您完成所有这些;更好的是,使用Spring数据自动生成查询基础结构。相关: