Мне нужно изменить профили Spring, которые активны в моем applicationContext, в одном методе моего тестового класса, и для этого мне нужно запустить одну строку кода перед обновлением конкурса, потому что я использую ProfileResolver. Я пробовал следующее:
@WebAppConfiguration
@ContextConfiguration(locations = {"/web/WEB-INF/spring.xml"})
@ActiveProfiles(resolver = BaseActiveProfilesResolverTest.class)
public class ControllerTest extends AbstractTestNGSpringContextTests {
@Test
public void test() throws Exception {
codeToSetActiveProfiles(...);
((ConfigurableApplicationContext)this.applicationContext).refresh();
... tests here ...
codeToSetActiveProfiles(... back to prior profiles ...);
... ideally refresh/reload the context for future tests
}
}
Но я получаю:
java.lang.IllegalStateException: GenericApplicationContext does not support multiple refresh attempts: just call 'refresh' once
DirtiesContext не работает для меня, потому что он запускается ПОСЛЕ выполнения класса / метода, а не раньше, и мне все равно нужно выполнить строку кода перед запуском обновления / перезагрузки.
Какие-либо предложения? Я попытался просмотреть запущенные прослушиватели / хуки, но не увидел очевидного места, куда можно было бы вставить себя, чтобы добиться такого поведения.