Модульный тест HSQL - Как создать несколько схем в памяти? - PullRequest
3 голосов
/ 07 ноября 2011

Я хотел бы использовать hsql в своих модульных тестах DAO для веб-приложения. Веб-приложение написано для mysql и использует три разные схемы в одной базе данных mysql. Некоторые схемы имеют отношения FK с данными в других схемах. Если я собираюсь выполнить модульное тестирование, я должен быть в состоянии выполнить с базой данных, которая может содержать несколько схем.

Я знаю, что HSQL поддерживает несколько схем, но я не знаю, как настроить hsql для настройки нескольких схем для базы данных в памяти. Я прочитал, что могу определить несколько схем в файле server.properties, но файл должен находиться в том месте, где был назван класс java - в месте junit.jar? Если это так, это будет трудно поддерживать в моем приложении Java Maven. Как я могу:

  1. Запустить базу данных hsql в памяти, чтобы запустить три базы данных?
  2. Где бы я разместил файл server.properties в моем приложении Maven?
  3. Могу ли я указать hsql использовать файл server.properties в месте, отличном от того, где находится jar-файл junit (для меня это showtopper)?
  4. Можно ли настроить несколько схем для базы данных в памяти только через выложенный URL-адрес jdbc?

Хотел бы я распутать схемы друг от друга, но в настоящее время это невозможно.

Спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 07 ноября 2011

HSQLDB поддерживает несколько схем в одной базе данных.Внешние ключи могут ссылаться на таблицы из разных схем.Следующее относится к самому последнему снимку HSQLDB 2.2.6, доступному из http://hsqldb.org

  1. Перед запуском тестов, выполните CREATE SCHEMA schemaname для каждой схемы.Вы можете указать абсолютный путь в аргументах командной строки при запуске.См. Руководство по HSQLD и JavaDoc на сервере.
  2. Да.
  3. Нет.Вы используете оператор SQL для создания схем.

Обратите внимание, что у вас есть два варианта запуска HSQLDB: один - как сервер, другой - как встроенная база данных.В случае сервера он должен быть запущен до запуска теста.В обоих случаях вам нужно подключиться к базе данных и создать схемы перед тестированием.

0 голосов
/ 22 декабря 2016

Можно создать разные БД, установив имя БД. По умолчанию он создает имя БД как testdb, но в случае, если мы хотим создать несколько БД, задайте имя явно.

new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.HSQL).setName("DB_NAME")
                .addScript("DDL.SQL") 
                .addScript("DML.SQL")
                .build();

Если вы запускаете следующую строку несколько раз, вы можете увидеть базы данных:

DatabaseManagerSwing.main(new String[] { "--url", "jdbc:hsqldb:mem:" + dbnaes, "--user", "sa", "--password", "" });
...