我正在开发一个应用程序,该应用程序可以让用户购买,删除和更改订单,并且产品来自已经建立的数据库。但是我在进行3个最重要的单元测试方面遇到一些问题,因此,我希望获得一些帮助。
以下是我要测试的功能:
public int addOrder(int ordernum, int idcustomer, int idproduct, int quantity, int shippingcost, Date salesDate, Date shippingDate, String company) throws SQLException {
int result = 0;
String sql = "INSERT INTO PURCHASE_ORDER VALUES=(?,?,?,?,?,?,?,?) ";
try (Connection connection = myDataSource.getConnection();
PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setInt(1, ordernum);
stmt.setInt(2, idcustomer);
stmt.setInt(3, idproduct);
stmt.setInt(4, quantity);
stmt.setInt(5, shippingcost);
stmt.setDate(6, (java.sql.Date) salesDate);
stmt.setDate(7, (java.sql.Date) shippingDate);
stmt.setString(8, company);
result = stmt.executeUpdate();
}
return result;
}
public int deleteOrder(int OrderNum) throws SQLException {
int result = 0;
String sql = "DELETE FROM PURCHASE_ORDER WHERE ORDER_NUM = ?";
try (Connection connection = myDataSource.getConnection();
PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setInt(1, OrderNum);
result = stmt.executeUpdate();
}
return result;
}
public int changeOrder(int Qte, int ordernum) throws SQLException {
int result=0;
String sql = "UPDATE PURCHASE_ORDER SET QUANTITY = ? WHERE ORDER_NUM=?";
try (Connection connection = myDataSource.getConnection();
PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setInt(1, Qte);
stmt.setInt(2, ordernum);
result=stmt.executeUpdate();
}
return result;
}
好吧,基本上我不知道从哪里开始进行这些测试...
在此先感谢任何愿意花时间帮助我的人:D。
答案 0 :(得分:0)
我们有几种测试数据库的方法。 您可能有一个虚拟数据库,可以在每次测试之前建立连接。然后执行您的方法,最后检查DB中的内容(如果插入,请检查其中是否有条目)。
如果您使用的是Spring,则有一种简单的方法可以使用H2(在内存DB中)进行测试。例如:Link
如果您在不使用Spring的情况下使用Java,则可以查看DBUnit。此外,此tutorial可以为您提供帮助,而无需任何其他插件。
还有其他框架可以帮助进行自动化测试。例如,Cucumber是一个功能测试框架,可以帮助测试整个流程,并允许您在数据库中进行检查以检查E2E流程是否正确。
请注意,一切取决于您在哪里运行测试。如果只是本地的,那么我提到的所有工具都将易于使用。如果使用Jenkins(或任何其他工具)在外部服务器中,则可能需要其他配置