【发布时间】:2014-09-03 09:54:51
【问题描述】:
我需要在我的测试类的单个方法中更改在我的 applicationContext 中活动的 Spring 配置文件,为此我需要在刷新比赛之前运行一行代码,因为我使用的是 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 对我不起作用,因为它是在类/方法执行之后而不是之前运行的,而且无论如何我都需要在运行刷新/重新加载之前执行一行代码。
有什么建议吗?我试图查看正在运行的侦听器/挂钩,但没有看到明显的位置可以插入自己以实现此行为。
【问题讨论】:
标签: java spring testng applicationcontext spring-test