请解释我如何在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等模型编写了单元测试。我不了解如何测试按钮和上面的其他操作。
答案 0 :(得分:1)
实际上你的代码存在许多缺点。例如,您尝试在“try”块中关闭连接,而不是最终关闭。
无论如何,直到你的问题。 请注意,只有当您不使用标准的sql-syntaxis时,我的建议才会出现,这对于所有数据库都是通用的(它可以用于学习,但在现实生活中很少见)。除非你在学习JDBC,否则我还建议你看看像Hibernate这样的ORM。
为了测试数据库操作,您可以这样做:
getConnection
方法,触发您的DatabaseConnection.dbConn()
。因此,与数据库交互的逻辑将保持不变,唯一能够存储的就是存储。
顺便说一句,没有必要以单独的方法提取DatabaseConnection.dbConn()
。你可以使用power-mock,它可以正常工作。但我建议你先学习mockito。