Осмотрите в памяти hsqldb при отладке

Мы используем hdsqldb в памяти для выполнения тестов junit, которые работают против базы данных. Дб является установкой прежде, чем запустить каждый тест с помощью пружинной конфигурации. Все хорошо работает. Теперь, когда тестовые сбои может быть удобно смочь осмотреть значения в в базе данных памяти. Действительно ли это возможно? Раз так, как? Наш URL:

jdbc.url=jdbc:hsqldb:mem:testdb; sql.enforce_strict_size=true

База данных уничтожается после того, как каждый тестирует. Но когда отладчик работает, база данных должна также все еще быть живой. Я попытался соединиться с sqldb databaseManager. Это работает, но я не вижу таблиц или данных. Любая справка высоко ценится!

39
задан Albert 23 April 2010 в 09:03
поделиться

2 ответа

HSQL находится в памяти, поэтому, когда вы говорите, что подключаетесь к диспетчеру баз данных SQLDB, это не так - вместо этого вы подключаетесь к другой базе данных в пространстве памяти диспетчера баз данных SQLDB, а не к той, которая находится в пространстве памяти модуля тестовое задание. Вот почему база данных в диспетчере баз данных SQLDB пуста.

Вы можете запустить HSQL в качестве сервера, используя org.hsqldb.Server , как описано здесь .

Хотя org.hsqldb.Класс сервера обычно используется для запуска отдельного процесса, вы можете создать его экземпляр и настроить в своем модульном тесте, что должно позволить удаленному процессу подключаться и запрашивать базу данных.

В качестве альтернативы вам придется написать какую-то функцию дампа, которая вызывается из вашего модульного теста по мере необходимости.

Кстати, использование HSQL в модульных тестах просто доказывает, что ваш код работает с HSQL, который отличается от реальной базы данных. Это означает, что вы можете получить ложные срабатывания и наоборот. То же самое может быть достигнуто с помощью имитирующего API или лучше, сохраните тестирование базы данных для некоторых приличных интеграционных тестов, которые работают с реальной базой данных.

17
ответ дан 27 November 2019 в 02:15
поделиться

В модульном тесте или в методе @Before / setUp () вы можете добавить следующую строку для запуска HSQL Database Manager:


org.hsqldb.util.DatabaseManager.main(new String[] {
  "--url",  "jdbc:hsqldb:mem:testdb", "--noexit"
});

или для улучшенной версии Swing


org.hsqldb.util.DatabaseManagerSwing.main(new String[] {
  "--url",  "jdbc:hsqldb:mem:testdb", "--noexit"
});

Менеджер БД позволяет вам проверять вашу схему и запускать SQL-запросы к оперативной базе данных в памяти во время работы приложения.

Не забудьте установить точку клюва или приостановить выполнение тем или иным способом, если вы хотите проверить состояние вашей базы данных в определенной строке.

69
ответ дан 27 November 2019 в 02:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: