在运行时检索上下文配置

时间:2010-12-10 13:04:53

标签: java unit-testing spring


关于使用Spring 3.0.4的@ContextConfiguration注释,我正面临一个小问题。我想通过applicationContext在运行时检索它们(如果可能的话)。

假设我有这门课程:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"foo.xml", "bar.xml"})
public class Foo() extends AbstractTransactionalJUnit4SpringContextTests {
    @Before
    public void before() {
        //retrieve foo.xml and bar.xml here
    }
}

在我的情况下这很有用,我在网上看了一下,并没有找到很多关于如何实现这一点的想法,也许SO专家可以帮助我。

由于

3 个答案:

答案 0 :(得分:3)

我不知道有一个公共实用工具,但最简单的方法是手动解析注释:

String[] locations = 
   Foo.class.getAnnotation(ContextConfiguration.class).locations();

答案 1 :(得分:0)

检查实施ApplicationContextAware 界面是否对您有所帮助。这应该可以让您访问应用程序上下文。

答案 2 :(得分:0)

您无法在@ContextConfig注释中动态指定位置。但是,您可以使用TestExecutionListener以及相应的注释。在beforeTestMethod()中,侦听器可以从TestContext获取ApplicationContext并手动加载必要的xml文件。

如果你想为每个测试想要不同的xml文件,你也应该在@After方法中调用TestContext.markApplicationContextDirty()。