2014-01-10 3 views
0

У меня есть ряд запросов HQL (~ 2000), которые генерируются из файлов конфигурации XML.Как проверить, что компилируется запрос HQL?

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

Написание полных интеграционных тестов, которые охватывают все эти файлы, явно находится вне сферы действия прямо сейчас. Однако это уже поможет найти файлы конфигурации, которые вызывают ошибки, такие как from SomeRandomUnmappedClass или select propertyThatDoesNotExist from SomeClass. Быстрая «проверка компиляции» без настройки параметров и без связи с реальной базой данных должна делать трюк. Но как это можно сделать?

(BTW: Я застрял на древнем Hibernate 3.3.2)

+0

Почему бы не создать тестовую базу данных с помощью [HSQLDB] (http://hsqldb.org/), которая представляет собой базу данных в оперативной памяти, идеально подходит для в целях тестирования. – Bohemian

+0

Поскольку сгенерированные запросы могут иметь параметры, и у меня нет значений для параметров. – yankee

ответ

0

На самом деле это чертовски прост: Поскольку у вас есть настройки для интеграции тестов, запускающий контекст спящего режима с HSQLDB в любом случае вы можете просто выполнить:

session.createQuery(hql); 

Это возвращает объект запроса, и обычно вы должны установить параметры, а затем выполнить запрос. Однако в течение createQuery -call требуемые проверки уже выполняются. Если что-то не так, возникает исключение. Просто отрегулируйте настройку и исполнение!

(Иногда решение просто слишком очевидно ;-))