如何通过代码以编程方式检索和修改@ConfigurationContext?
我有一个默认配置,其中包含有效的 xml 文件。
现在我需要为特定的测试用例添加一个无效的配置并进行测试。
如何通过代码以编程方式覆盖、检索和修改@ConfigurationContext?
提前致谢, 凯瑟尔
如何通过代码以编程方式检索和修改@ConfigurationContext?
我有一个默认配置,其中包含有效的 xml 文件。
现在我需要为特定的测试用例添加一个无效的配置并进行测试。
如何通过代码以编程方式覆盖、检索和修改@ConfigurationContext?
提前致谢, 凯瑟尔
免责声明:我假设您正在使用 JUnit,因为您在回复我的评论时没有做出不同的评论。
我认为您尝试做的事情没有多大意义,在我看来,最好为您的非工作配置创建一个专用的测试类,以便能够进行多个测试。然而:
@RunWith(SpringJUnit4ClassRunner.class)
用和注释你的测试类@ContextConfiguration(locations = {"classpath:/working-context.xml"})
。通过这种方式,您可以通过两种方式检索配置上下文:首先,您可以简单地声明一个@Inject ApplicationContext context
包含工作上下文的字段。或者,您创建测试类implements ApplicationContextAware
,然后编写一个public void setApplicationContext (ApplicationContext applicationContext)
. 我会选择第二个,因为它将以编程方式更改上下文。not-working-context.xml
并将它放在你的类路径中context = setApplicationContext(new ClassPathXmlApplicationContext("not-working-context.xml"));
并测试您喜欢的所有错误。最后,您的测试类将如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/working-context.xml"})
public class TestClass implements ApplicationContextAware {
private ApplicationContext context;
public void setApplicationContext(ApplicationContext context){
this.context = context;
}
//Other tests
@Test
public void zFailingTest() {
context = setApplicationContext(new ClassPathXmlApplicationContext("not-working-context.xml"));
//your test
}
}