В моем проекте у меня много файлов hbm.xml, из которых я генерирую классы java и sql для БД. Семантические ошибки в файлах hbm.xml показываются мне после вызова buildSessionFactory (), что действительно раздражает в текущей ситуации. Я хотел бы иметь тестовый класс, который делает это для меня с немного другим конфигом (используйте вместо этого ebedded derby). Мое текущее «решение» выглядит так:
String dbName = "test";
try{
SessionFactory fact = new Configuration().configure()
.setProperty("hibernate.connection.driver_class","org.apache.derby.jdbc.EmbeddedDriver")
.setProperty("hibernate.connection.url","jdbc:derby:" + dbName + ";create=true")
.setProperty("hibernate.connection.username","")
.setProperty("hibernate.connection.password","")
.setProperty("hibernate.dialect","org.hibernate.dialect.DerbyDialect")
.setProperty("hibernate.hbm2ddl.auto","create-drop")
.buildSessionFactory();
assertNotNull(fact);
Session s = fact.openSession();
assertNotNull(s);
s.close();
fact.close();
}catch(Throwable t){
fail(t.getMessage());
}
Но это не очень удовлетворительно с моей точки зрения.
Я также хотел бы проверить, все ли в порядке именованные запросы и так далее. Есть ли способ сделать такого рода тесты в автоматизированном процессе?
Вторая часть моего вопроса заключается в том, что если дерби - хороший выбор для тестирования, почему я не могу автоматически удалить БД после завершения теста? Я хотел бы указать параметр в URL, как
"jdbc:derby:" + dbName + ";create=true;drop=true"
Используя это решение, я получаю каталог с именем dbName и файл derby в каталоге моего проекта, что не круто.