如何对采购订单进行一些单元测试

时间:2019-04-15 16:27:05

标签: java unit-testing

我正在开发一个应用程序,该应用程序可以让用户购买,删除和更改订单,并且产品来自已经建立的数据库。但是我在进行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。

1 个答案:

答案 0 :(得分:0)

我们有几种测试数据库的方法。 您可能有一个虚拟数据库,可以在每次测试之前建立连接。然后执行您的方法,最后检查DB中的内容(如果插入,请检查其中是否有条目)。

如果您使用的是Spring,则有一种简单的方法可以使用H2(在内存DB中)进行测试。例如:Link

如果您在不使用Spring的情况下使用Java,则可以查看DBUnit。此外,此tutorial可以为您提供帮助,而无需任何其他插件。

还有其他框架可以帮助进行自动化测试。例如,Cucumber是一个功能测试框架,可以帮助测试整个流程,并允许您在数据库中进行检查以检查E2E流程是否正确。

请注意,一切取决于您在哪里运行测试。如果只是本地的,那么我提到的所有工具都将易于使用。如果使用Jenkins(或任何其他工具)在外部服务器中,则可能需要其他配置