ApplicationContext создается в нескольких потоках при выполнении тестов с помощью Maven

У меня есть два persistence-units, которые идентичны, за исключением того, что другой использует Hibernate hbm2ddl create-drop, а другой использует validate, и там база данных создается liquiBase.

Теперь запустив любой из тестов (HSQLDB с именем in-mem db) из eclipse, они работают нормально. Но запуская их все из maven, они тормозят со странными нарушениями внешнего ключа.

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

Почему я получаю четыре потока со своими собственными ApplicationContexts? У меня нет параметров parallel для уверенного огня, и я также не использую переключатель -T для maven.

Редактировать:

Вот фрагмент вывода командной строки Maven

Hibernate: drop table PostalCodeDistribution if exists
Hibernate: drop table PublicationAudit if exists
15:21:13.672 [Thread-2] INFO  org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'TestPU-nocreate'
Hibernate: drop table PostalCodeDistributionAudit if exists
Hibernate: drop table PublicationInvoicing if exists
Hibernate: drop table PostalCodeSubscriberCountAudit if exists
15:21:13.672 [Thread-2] INFO  org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000030: Cleaning up connection pool [jdbc:hsqldb:mem:ptptest]
Hibernate: drop table Revision if exists
Hibernate: drop table PriceDate if exists

person vertti    schedule 12.10.2012    source источник


Ответы (1)


Как вы, наверное, знаете, по умолчанию SureFire выполняет ваши тесты в другом потоке («вилке»). См.: Выполняет ли плагин Maven surefire тесты с использованием нескольких потоков?

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

person noahlz    schedule 12.10.2012
comment
Я не думаю, что это действительно отвечает на вопрос. - person eis; 20.02.2018
comment
Ну, а без подробностей о тестовой конфигурации и коде приложения, что еще можно предложить? @vertti необходимо следить либо за журналами, которые включают имена потоков, либо за более подробной информацией. Обратите внимание, что никто другой не предоставил ответ. - person noahlz; 20.02.2018
comment
Что ж, можно было бы предложить описание того, как весной работают тесты, связанные с персистентным контекстом JPA: какая ожидается политика повторного использования контекстов приложения и что этому способствует. Нормально ли иметь четыре разных контекста? Или нет? Почему? - person eis; 20.02.2018