2016-11-21 13 views
0

У меня возник вопрос о создании тестовых данных в webapp, работающих в Glassfish с JPA (и JSF).Создание тестовых данных в проекте JPA

Обычно я создаю класс вроде TestDataCreator, который генерирует базовую среду баз данных тестирования. Этот класс содержит метод main как:

public static void main(String[] args) { 
    createSomeUsers(); 
    createSomeStockItems(); 
    putSomeItemsIntoBaskets(); 
    // ... 
} 

и каждый из theese методов просто вставляет некоторые объекты в базе данных.

В то время как я использовал добрый JDBC для подключения к базе данных, это сработало нормально. Но теперь я реализую приложение внутри Glassfish и JPA. Итак, теперь Glassfish - это тот, кто выполняет соединение с базой данных.

Итак, мой вопрос: как (правильно) изменить этот класс, чтобы снова работать. Это лучший способ, чем создание веб-сайта с кнопкой «Создать базу данных», вызывающей метод TestDataCreator?

Кроме того, я предпочитаю хранить этот класс в src/test/java, но решение «веб-сайта» позволяет положить класс в src/main/java. А это - поправьте меня, если нет - воняет.

Спасибо советы

ответ

0

Ну, я могу ответить на половину вопросов, если вы позволите мне сделать это.

Это лучший способ создать сайт с помощью кнопки «Создать базу данных», вызывающую метод TestDataCreator?

Да, есть. Моим любимым вариантом является решение Flyway, где он может легко воспроизвести все изменения на столе и сырые вставки в любой среде, с которой вы работаете (dev, test, stage, production, ...). Но есть и другие альтернативы, как и использование только JPA для этого, как описывает этот article.

Кроме того, я предпочитаю, чтобы сохранить этот класс в SRC/тест/Java, но «веб-сайт» решение приводит поместить класс в SRC/основной/Java. И это - исправьте меня, если нет - воняет.

Да, в идеальном мире у вас будут тесты с использованием JUnit с тестовыми файлами в каталоге «src/test/java». Я не уверен, как настройки подключения к источнику данных сделаны в стеклянную рыбку, поэтому я не могу с этим поделать. Но попробуйте взглянуть на это stackoverflow answer, может быть, это может быть полезно для вас как-то.