У меня есть несколько тестов, которые все распространяются на те же корневые тесты, которые определяют контекст приложения теста Spring. Один из моих тестов использует другой профиль, поэтому я аннотировал дочерний класс с @ActiveProfiles("specialTestProfile")
, этот профиль создает специальный макет, который вводится в контексте. Я хочу очистить свой контекст до и после выполнения этого теста, но я не нашел правильный способ сделать это. Я знаю, что среда Spring Spring использует некоторое кэширование контекста и что в моем случае у меня должен быть два разных контекста, и не обязательно перезагружать контекст, но он не работает из-за bitronix, которые генерируют эту странную ошибку, если я не очистить контекст:Тесты на битроникс + весна + Различные профили пружин
Caused by: bitronix.tm.resource.ResourceConfigurationException: cannot create JDBC datasource named unittestdb
at bitronix.tm.resource.jdbc.PoolingDataSource.init(PoolingDataSource.java:57)
at sun.reflect.GeneratedMethodAccessor404.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
... 62 more
Caused by: java.lang.IllegalArgumentException: resource with uniqueName 'unittestdb' has already been registered
at bitronix.tm.resource.ResourceRegistrar.register(ResourceRegistrar.java:55)
at bitronix.tm.resource.jdbc.PoolingDataSource.buildXAPool(PoolingDataSource.java:68)
at bitronix.tm.resource.jdbc.PoolingDataSource.init(PoolingDataSource.java:53)
... 68 more
Даже если я перезагрузить контекст для каждого тестового класса (по аннотированию моего родительского класса с @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
, я все еще получаю ошибку выше в каком-то момент ... у вас есть какие-либо идеи, как решить эта проблема?
thx для вашего ответа Я попробую параметр disableJmx, потому что я alredy попробовал решение uniqueName, но я получил еще одну ошибку, заявив, что я не могу зарегистрировать два разных источника данных XA. Я дам Вам знать! – Abbadon