У меня возникла проблема, когда я пытаюсь создать тест Cucumber/Arquillian для новой службы, которая выполняет пакетное обновление с помощью JPQL. Кажется, что все работает правильно, за исключением моего кода @Then
, подтверждающего изменение.Нелогичные результаты теста Cucumer/Arquillian с H2
Я настраиваю свои тестовые данные в своем файле свойств и добавляется в базу данных H2, которая создается в памяти для каждого теста. При запуске пакетного обновления он возвращает ожидаемое количество обновлений на основе этих данных. Но когда я извлекаю один из объектов, которые должны были быть обновлены, данные об этом объекте не изменяются.
Обратите внимание: когда я выполняю вызов службы в своем приложении против нашей базы данных Oracle, он работает правильно, и таблица обновляется, как ожидалось. Проблема, похоже, связана с кэшированием в базе данных H2 в памяти.
Мой источник данных, который развертывается в JBoss на Arquillian является:
<datasource enabled="true"
jndi-name="jdbc/arquillian"
pool-name="ArquillianEmbeddedH2Pool">
<connection-url>
jdbc:h2:mem:arquillian;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS TEST_DB
</connection-url>
<driver>h2</driver>
</datasource>
Мой Огурцы тест определяет @PersistenceContext(unitName = "localH2-testDB")
Мой persistence.xml содержит:
<persistence-unit name="localH2-testDB">
<jta-data-source>jdbc/arquillian</jta-data-source>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.cache.use_second_level_cache" value="false"/>
<property name="hibernate.cache.use_query_cache" value="false"/>
</properties>
</persistence-unit>
Я не знаю, что другие настройки для базы данных H2 я могу изменить, чтобы попытаться устранить любое кэширование.