我想编写一些测试来检查已部署的WAR的XML配置。不幸的是,有些bean要求设置一些环境变量或系统属性。当使用@ContextConfiguration使用方便的测试样式时,如何在初始化spring之前设置一个环境变量?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:whereever/context.xml")
public class TestWarSpringContext { ... }如果我用注释配置应用程序上下文,我看不到在初始化spring上下文之前可以做一些事情的钩子。
发布于 2012-08-27 14:48:17
可以在静态初始化器中初始化系统属性:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:whereever/context.xml")
public class TestWarSpringContext {
static {
System.setProperty("myproperty", "foo");
}
}静态初始化程序代码将在初始化spring应用程序上下文之前执行。
发布于 2016-03-03 04:45:23
发布于 2016-12-23 17:21:31
还可以使用测试ApplicationContextInitializer来初始化系统属性:
public class TestApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext>
{
@Override
public void initialize(ConfigurableApplicationContext applicationContext)
{
System.setProperty("myproperty", "value");
}
}然后,除了Spring上下文配置文件位置之外,还在测试类上配置它:
@ContextConfiguration(initializers = TestApplicationContextInitializer.class, locations = "classpath:whereever/context.xml", ...)
@RunWith(SpringJUnit4ClassRunner.class)
public class SomeTest
{
...
}这样,如果应该为所有单元测试设置特定的系统属性,则可以避免代码重复。
https://stackoverflow.com/questions/11306951
复制相似问题