【问题标题】:How to make some unit-tests for a purchase order如何为采购订单进行一些单元测试
【发布时间】:2019-04-15 16:27:04
【问题描述】:

我正在制作一个应用程序,可以让用户购买、删除和更改订单,产品来自已制作的数据库。但是我在如何进行三个最重要的单元测试时遇到了一些问题,所以我希望得到一些帮助。

以下是我要从中进行测试的函数:

    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。

【问题讨论】:

  • 这不是一个提供代码的平台,请自己尝试并寻求帮助以尽最大努力尝试。此外,这似乎是一个类的一部分,但没有人知道这个类的样子。

标签: java unit-testing


【解决方案1】:

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

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

如果您在没有 Spring 的情况下使用 Java,可以查看 DBUnit。这个tutorial 也将帮助您,无需任何额外的插件。

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

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

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2012-01-08
    • 2020-09-08
    相关资源
    最近更新 更多