Встречается на собеседованиях • сегодня

Как в Unit-тестах протестировать синтаксис базы данных

Для тестирования синтаксиса SQL-запросов в Unit-тестах можно использовать несколько подходов:

  1. Использование 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());
    }
}
  1. Парсинг 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");
    }
}
  1. Мокирование JDBC (Mockito):
java
@Test
public void testPreparedStatement() {
    PreparedStatement ps = mock(PreparedStatement.class);
    when(ps.executeQuery()).thenReturn(mock(ResultSet.class));
    
    // Тестируемый код, использующий PreparedStatement
    // Если синтаксис неверен - будет исключение
}

Лучший подход зависит от конкретных требований: in-memory БД ближе к реальности, но медленнее; парсинг быстрее, но не проверяет семантику.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы