1

如何通过代码以编程方式检索和修改@ConfigurationContext?

我有一个默认配置,其中包含有效的 xml 文件。

现在我需要为特定的测试用例添加一个无效的配置并进行测试。

如何通过代码以编程方式覆盖、检索和修改@ConfigurationContext?

提前致谢, 凯瑟尔

4

1 回答 1

0

免责声明:我假设您正在使用 JUnit,因为您在回复我的评论时没有做出不同的评论。
我认为您尝试做的事情没有多大意义,在我看来,最好为您的非工作配置创建一个专用的测试类,以便能够进行多个测试。然而:

  1. @RunWith(SpringJUnit4ClassRunner.class)用和注释你的测试类@ContextConfiguration(locations = {"classpath:/working-context.xml"})。通过这种方式,您可以通过两种方式检索配置上下文:首先,您可以简单地声明一个@Inject ApplicationContext context包含工作上下文的字段。或者,您创建测试类implements ApplicationContextAware,然后编写一个public void setApplicationContext (ApplicationContext applicationContext). 我会选择第二个,因为它将以编程方式更改上下文。
  2. 写一个not-working-context.xml并将它放在你的类路径中
  3. 在您想要失败的测试方法中,重新加载应用程序上下文context = setApplicationContext(new ClassPathXmlApplicationContext("not-working-context.xml"));并测试您喜欢的所有错误。
  4. 虽然坚持测试用例顺序不是一个好习惯,但请确保您的失败测试将作为最后一个执行(测试按字母顺序执行),这样您就不必在其他测试中重新加载工作上下文。



最后,您的测试类将如下所示:

@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
  }
}
于 2013-01-17T15:33:28.983 回答