Как проверить 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.
Для тестирования операций с базой данных вы можете сделать это:
- Создать нестатический
getConnection
метод, который вызывает вашDatabaseConnection.dbConn()
, - Смоделируйте его, используя библиотеку mockito, предоставляющую легковесную базу данных, такую как hsql.
- Сделать ваши тесты
Таким образом, логика взаимодействия с базой данных останется прежней, единственное, что может изменить, - это хранилище.
Кстати, нет необходимости извлекать DatabaseConnection.dbConn()
в отдельном методе. Вы можете использовать power-mock, и он будет работать нормально. Но я рекомендую вам сначала изучить mockito.