Как сделать некоторые модульные тесты для заказа на поставку

#java #unit-testing

#java #модульное тестирование

Вопрос:

Я создаю приложение, которое может позволить пользователю покупать, удалять и изменять заказ, при этом продукты поступают из уже созданной базы данных. Но у меня есть некоторые проблемы с тем, как сделать 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 resu<
}

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 resu<
}

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 resu<
}
 

Ну, в принципе, я не знаю, с чего начать, чтобы сделать эти тесты…

Заранее спасибо всем, кто найдет время, чтобы помочь мне: D.

Комментарии:

1. Это не платформа, предоставляющая код, попробуйте сами и попросите помощи с вашей лучшей неудачной попыткой. Кроме того, это, похоже, часть класса, но никто не знает, как выглядит этот класс.

Ответ №1:

У нас есть несколько способов протестировать базу данных. У вас может быть фиктивная база данных, к которой вы устанавливаете соединение перед каждым тестом. Затем выполните свои методы, и в конце вы проверяете, что находится в БД (в случае вставки проверяет, есть ли запись).

Если вы используете Spring, есть простой способ выполнить тестирование с помощью H2 (в базе данных памяти). Пример: Ссылка

Если вы используете Java без Spring, вы можете заглянуть в DBUnit. Также этот урок поможет вам, не требуя никаких дополнительных плагинов.

Существуют другие фреймворки, которые могут помочь с автоматическим тестированием. Например, Cucumber — это платформа тестирования функций, которая может помочь протестировать весь поток и позволяет вам выполнять проверки в БД во время проверки правильности потока E2E.

Обратите внимание, что все зависит от того, где вы проводите тестирование. Если это только локально, то все инструменты, которые я упомянул, будут просты в использовании. Если находится на внешнем сервере с помощью Jenkins (или любого другого инструмента), может потребоваться дополнительная настройка