Встречается на собеседованиях • сегодня
Как в Unit-тестах протестировать синтаксис базы данных
Для тестирования синтаксиса SQL-запросов в Unit-тестах можно использовать несколько подходов:
- Использование in-memory БД (H2, SQLite):
java
@Test
public void testSqlSyntax() {
try (Connection conn = DriverManager.getConnection("jdbc:h2:mem:test")) {
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE test (id INT)"); // Проверяем DDL
stmt.execute("INSERT INTO test VALUES (1)"); // Проверяем DML
} catch (SQLException e) {
fail("Invalid SQL syntax: " + e.getMessage());
}
}- Парсинг SQL с помощью библиотек (например, JSqlParser):
java
@Test
public void testQueryParsing() {
String sql = "SELECT * FROM users WHERE id = 1";
try {
CCJSqlParserUtil.parse(sql); // Бросит исключение при ошибке
} catch (JSQLParserException e) {
fail("Invalid SQL syntax");
}
}- Мокирование JDBC (Mockito):
java
@Test
public void testPreparedStatement() {
PreparedStatement ps = mock(PreparedStatement.class);
when(ps.executeQuery()).thenReturn(mock(ResultSet.class));
// Тестируемый код, использующий PreparedStatement
// Если синтаксис неверен - будет исключение
}Лучший подход зависит от конкретных требований: in-memory БД ближе к реальности, но медленнее; парсинг быстрее, но не проверяет семантику.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы