У меня есть набор интеграционных тестов, работающих с SpringJUnit4ClassRunner
. Я пытаюсь запустить их параллельно, используя maven surefire. Тем не менее, я заметил, что код блокируется перед входом в синхронизированный блок в CacheAwareContextLoaderDelegate.loadContext()
.Испытания на прохождение пружины параллельно с maven
Есть ли способ обойти этот кеш? Я попытался сделать это, но похоже, что существует более общее состояние, чем только сам кеш, поскольку мое приложение зашло в тупик внутри кода Spring. Или может ли синхронизация быть более мелкозернистой, так или иначе синхронизируя на ключе карты, а не на всей карте?
Моя мотивация для parallelising тестов двояка:
- В некоторых тестах я заменить фасоль с издевается. Поскольку издевательства по своей природе являются сдержанными, я должен создать новый ApplicationContext для каждого метода тестирования, используя
@DirtiesContext
. - В других тестах я хочу развернуть подмножество ресурсов Джерси. Для этого я задаю подмножество классов конфигурации Spring. Поскольку Spring использует
MergedContextConfiguration
в качестве ключа в кэш-контексте, эти тесты не смогут совместно использовать ApplicationContexts.
Я [поднял отчет об ошибке для этого] (https: //jira.springsource.org/browse/SPR-10536) – hertzsprung