我正在将所有Spring配置转移到Java代码。我遇到了一个问题,我现在想根据命令行开关或maven配置文件等来设置我正在使用的配置文件......我也想避免在每个测试中放置所有相同的注释类。这不是一个Web应用程序,而是一个功能测试套件。Java Spring ApplicationContext配置
这里是我的尝试:
public class CompanyApplicationContextInitializer
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(final ConfigurableApplicationContext applicationContext) {
final AnnotationConfigApplicationContext rootContext = new AnnotationConfigApplicationContext();
rootContext.getEnvironment().setActiveProfiles(System.getProperty("spring.profile.active", "local"));
rootContext.register(LocalConfiguration.class, SauceLabsConfiguration.class);
}
}
然后,我必须标注有以下我的测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CompanyApplicationContextInitializer.class)
然而,当我尝试运行我的测试,我的自动连接件不被定位。我在正确的轨道上吗?我怎样才能在这个类中编程来设置我的ApplicationContext?
我希望避免有一个基础测试类,它定义了所有的配置选项,但它看起来像我不会有选择(目前)。我希望避免必须在每个测试类上放置哪个配置文件处于活动状态(这很容易在这里使用JVM属性完成),但我绝对希望避免必须在每个测试类上放置ContextConfiguration注释,因此将其升级到基准测试将缓解该问题。 – Scott 2012-04-30 12:40:37
@ActiveProfiles注解可以在基类中使用,它将应用于所有的子类。此外,该注释具有许多属性,包括一个名为inheritLocations的属性。看到Javadoc。 – 2012-07-13 19:38:35