2014-01-09 2 views
1

У меня проблема, которая занимает много времени во время разработки, мне нужно проверить что-то HQL, которое я положил в DAO, но мне пришлось перекомпилировать весь проект в eclipse и поставить в tomcat, что занимает примерно 40-60 секунд начните снова, и если что-то пойдет не так ... снова пришлось перераспределить ...Как протестировать HQL без повторного развертывания всего проекта?

Итак, есть способ протестировать HQL без перекомпиляции всего? как я попробовал Hibernate инструменты плагин, но я не вижу, как это сделать с аннотациями (проект все с аннотациями, не использовать HBM файлы ...)

Благодаря

+0

Выполнение основного метода? –

ответ

1

Предполагая, что вы обращаетесь к вашему DAO через службу я хотел бы сделать что-то вроде этого:

public static void main(String[] args) { 

    AbstractApplicationContext factory = new ClassPathXmlApplicationContext("application-context.xml"); 

    YourService yourservice = (YourService)factory.getBean("YourService"); 
    YourObject obj = new YourObject("data1", "data2"); 
    yourservice.save(obj); 
    YourObject foundobj = yourservice.load(1); // or yourservice.findObjectByLabel("label") 
    System.out.print(foundobj); 

} 

Или написать тест JUnit. http://www.springbyexample.org/examples/simple-spring-transactional-junit4-test-code-example.html

1

Я бы выбрал вариант отладки, упомянутый Валером для пунктуальной необходимости. Если вам потребуются более сильные утверждения, я бы предпочел написать несколько тестов для DAO, как предлагалось.

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

Для этого я использую интерпретатор groovy (или другого языка сценария). Если вы предоставите DAO или любые другие соответствующие объекты в контексте вашего интерпретатора, тогда у вас будет консоль для проведения всех видов экспериментов без повторной компиляции.

Вы сможете запускать произвольный код в своем приложении!

Для примера с Groovy вы можете посмотреть здесь: Embedding Groovy и более точно здесь: Embedding a Groovy Console in a Java Server Application

Если вы не хотите использовать заводной, вы также можете получать удовольствие от BeanShell (Pure Java) или rhino (javascript) или любой другой язык скриптов, поддерживаемый JVM.

Помните, что наличие такого типа консоли является бэкдором для вашего приложения и что вы не должны выпускать его как часть вашего приложения.

0

То, что я делал в прошлом для тестирования HQL, записывает ограниченный набор тестов интеграции с использованием в памяти db, например Hypersonic, и Spring JUnit test extensions. This post описывает, как это можно сделать с помощью dbunit. Вы также можете просто перетащить данные с помощью пакетных операций JDBC в свою настройку и снести.

Предупреждающие указания: я бы не добавил эти тесты к вашему набору модульных тестов, так как установка данных и срыв могут занять больше времени, чем типичный единичный тест. Это действительно интеграционные тесты, используемые для добавления вас в разработку и отладку вашего HQL. Я бы не стал тестировать операции CRUD с использованием этих типов тестов, так как тогда вы просто интегрируете тестирование своей структуры ORM, которая должна была быть уже выполнена.

Смежные вопросы