Использование другого модуля персистентности для тестирования - PullRequest
2 голосов
/ 18 июля 2011

У меня есть несколько сессионных компонентов без сохранения состояния, для которых я создал модульные тесты.Когда я запускаю эти тесты во встроенном контейнере GlassFish, для моего проекта используется постоянный модуль по умолчанию, который является локальной базой данных MySQL для целей разработки.Однако при выполнении модульных тестов я хочу использовать встроенную базу данных Derby, чтобы при любом модульном тестировании база данных не загромождалась фиктивными данными.

В OpenEJB можно переопределить файл persistence.xml, создав хешотобразить и поместить некоторые свойства, например так:

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory");

p.put("movie-unit.hibernate.hbm2ddl.auto", "update");
p.put("movie-unit.hibernate.dialect", "org.hibernate.dialect.HSQLDialect");

context = new InitialContext(p);

Возможно ли то же самое или что-то подобное в реализации Sun для запуска модульных тестов в другой базе данных?

Редактировать: Я использую Ant для создания проекта.Я предполагаю, что можно было бы скопировать тестирование persistence.xml при запуске теста и скопировать обычный файл persistence.xml для развертываний, но это кажется неуклюжим.Было бы целесообразно перейти на Maven?

1 Ответ

3 голосов
/ 18 июля 2011

Я не знаю, какой тип инструмента сборки вы используете.

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

project 
 |- src/main/resources
 |- src/test/resources

Значения в src/test/resources не включены в ваш последний артефакт и используются только модульным модулем тестирования (Surefire) во время фазы тестирования сборки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...