#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 (или любого другого инструмента), может потребоваться дополнительная настройка