我正在尝试对我的 spring-boot 应用程序运行 Selenium 测试。 我想使用我的 application.yml 和 application-test.yml 定义的属性启动应用程序。但是,默认情况下不会发生这种情况。
我尝试这样做 Dave Syer suggested并实现了一个 ApplicationContextInitializer,它使用 YamlPropertySourceLoader 读取 application.yml 和 application-test.yml 文件。
这似乎没有任何效果 - 在我的应用程序测试中将服务器端口设置为 9000 没有效果。
下面是我的测试基类代码:
@ContextConfiguration(classes = {TestConfiguration.class}, initializers = {TestApplicationYamlLoaderApplicationContextInitializer.class})
@SharedDriver(type = SharedDriver.SharedType.ONCE)
@ActiveProfiles({"test"})
public abstract class IntegrationBase extends AbstractTestNGSpringContextTests {
....
}
下面是我的 ApplicationContextInitializer 的代码:
public class TestApplicationYamlLoaderApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
ConfigurableEnvironment env = applicationContext.getEnvironment();
YamlPropertySourceLoader loader = YamlPropertySourceLoader.matchAllLoader();
PropertySource applicationYamlPropertySource = loader.load("application.yml", new FileSystemResource("src/main/resources/application.yml"));
PropertySource testProfileYamlPropertySource = loader.load("application.yml", new FileSystemResource("src/main/resources/application-test.yml"));
env.getPropertySources().addFirst(applicationYamlPropertySource);
env.getPropertySources().addFirst(testProfileYamlPropertySource);
System.out.println("woohoo!");
}
}
以及 application-test.yml
server:
port: 9000
最佳答案
@ContextConfiguration
不知道 Spring Boot 初始值设定项。您尝试过@SpringApplicationConfiguration吗? (那么您就不需要自定义初始值设定项。)
关于spring-boot - 如何在 spring-boot 配置中加载 application.yaml 配置以进行 selenium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21483466/