我正在将我所有的 Spring 配置转移到 Java 代码中。我遇到了一个问题,我现在想根据命令行开关或 Maven 配置文件等设置我正在使用的配置文件……我还想避免在每个测试中放置所有相同的注释类。这不是一个 Web 应用程序,而是一个功能测试套件。
这是我的尝试:
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?