Как проверить CruD операции в Java

Пожалуйста, объясните, как я могу проверить CRUD-операции в Java следующим образом:

public void insert(User user) {
    Connection con = null;
    PreparedStatement ps;
    try {
        con = DatabaseConnection.dbCon();
        ps = con.prepareStatement("insert into usert (name,surname,role_id,login,password) values(?,?,?,?,?)");
        ps.setString(1, user.getName());
        ps.setString(2, user.getSurname());
        ps.setInt(3, user.getRole().getId());
        ps.setString(4, user.getLogin());
        ps.setString(5, user.getPassword());
        ps.execute();
        if (con != null) {
            con.close();
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

/**
 * deletes user
 * @param user
 */
public void delete(User user) {
    Connection con = null;
    PreparedStatement ps;
    try {
        con = DatabaseConnection.dbCon();
        ps = con.prepareStatement("delete from usert where id = ?");
        ps.setInt(1, user.getId());
        ps.execute();
        if (con != null) {
            con.close();
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

Теперь я написал модульные тесты для таких моделей, как "Пользователь" и т. Д. Я не понимаю, как тестировать кнопки и другие операции, как описано выше.

1 ответ

На самом деле у вашего кода есть много недостатков. Например, вы пытаетесь закрыть соединение в блоке try, а не finally.

Во всяком случае, до вашего вопроса. Обратите внимание, что мой совет будет иметь смысл только в том случае, если вы не используете стандартный синтаксис sql, общий для всех баз данных (это нормально для обучения, но в реальной жизни это редкая ситуация). И если вы не учитесь в JDBC, я бы также рекомендовал вам взглянуть на ORM как Hibernate.

Для тестирования операций с базой данных вы можете сделать это:

  1. Создать нестатический getConnection метод, который вызывает ваш DatabaseConnection.dbConn(),
  2. Смоделируйте его, используя библиотеку mockito, предоставляющую легковесную базу данных, такую ​​как hsql.
  3. Сделать ваши тесты

Таким образом, логика взаимодействия с базой данных останется прежней, единственное, что может изменить, - это хранилище.

Кстати, нет необходимости извлекать DatabaseConnection.dbConn() в отдельном методе. Вы можете использовать power-mock, и он будет работать нормально. Но я рекомендую вам сначала изучить mockito.

Другие вопросы по тегам