Вот немного предыстории, чтобы дать вам некоторый контекст для моего вопроса.
Я работаю над проектом с местной компанией через мой колледж, и программа, которую я создаю, должна взаимодействовать с базой данных. и выполнить основные c операции CRUD. Компания настаивает на том, чтобы мой код был модульным, и я проверяю соединение с базой данных при выполнении модульных тестов. Я пытался протестировать свой код в отдельной базе данных, но мне сказали, что это тест на реализацию, а не модульный тест.
Я написал класс java, который содержит методы, которые просто вызывают и выполняют другие * Методы 1005 *, такие как createStatement()
и executeUpdate(...)
, так что вместо написания четырех или пяти строк кода для взаимодействия с базой данных я могу просто вызвать другой фрагмент кода, чтобы немного автоматизировать его для меня. Вот пример одного из методов в моем классе:
public boolean insertIntoTable(Connection connection, IQueryBuilder queryBuilder, String tableName, String[] dbFields, String[] dbFieldsValues) {
String query = queryBuilder.insertIntoStatement(tableName, dbFields, dbFieldsValues);
try {
Statement st = connection.createStatement();
st.executeUpdate(query);
st.close();
connection.close();
return true;
} catch (SQLException exception) {
return false;
}
}
Вышеуказанный метод insertIntoTable
основан только на двух других частях кода: Connection
и IQueryBuilder
. Он возвращает true, если все строки в try выполняются без сбоев, и false в противном случае.
Connection
- это интерфейс из пакета java.sql
, поэтому мы знаем, что его вызовы методов и реализации должны работать правильно .
IQueryBuilder
- это еще один мой интерфейс, который возвращает отформатированные SQL строки, предназначенные для использования методом executeUpdate
интерфейса Statement
. Реализация IQueryBuilder, которую я буду использовать для этого метода, прошла модульное тестирование и была одобрена компанией, поэтому я предполагаю, что пройденная реализация на этом этапе также работает нормально.
Таким образом, мы добрались до моего вопроса. Как мне выполнить модульное тестирование чего-то вроде insertIntoTable
, которое не обязательно должно иметь какие-либо бизнес-логики c и должно использовать фиктивное соединение?
Кроме того, что именно я здесь тестирую? Что метод возвращает истину или ложь? Я издеваюсь над подключением к базе данных все, что хочу, без проблем. Тем не менее, я чувствую, что, если я высмеиваю соединение с базой данных, я на самом деле ничего не тестирую, поскольку нет никакого способа узнать, действительно ли мой код работал или нет.