Java 从integration test或default.yml运行时加载特定于测试的属性
在运行集成测试时是否可以加载特定于测试的属性。在这种情况下,keyspaceApp:test和正常运行时应加载keyspaceApp:abc .yml文件Java 从integration test或default.yml运行时加载特定于测试的属性,java,spring,integration-testing,spring-boot,Java,Spring,Integration Testing,Spring Boot,在运行集成测试时是否可以加载特定于测试的属性。在这种情况下,keyspaceApp:test和正常运行时应加载keyspaceApp:abc .yml文件 defaults: &defaults cassandra: keyspaceApp: abc solr: keyspaceApp: xyz test: cassandra: keyspaceApp: test 集成测试 @RunWith(SpringJUnit4Class
defaults: &defaults
cassandra:
keyspaceApp: abc
solr:
keyspaceApp: xyz
test:
cassandra:
keyspaceApp: test
集成测试
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = CommonDataApplication.class)
@IntegrationTest
@Profile("test")
public class CassandraClientTest {
@Autowired
CassandraClientNew cassandraClientNew;
@Test
public void test(){
cassandraClientNew.getSession();
System.out.println(" **** done ****");
}
}
主类
@EnableAutoConfiguration
@ComponentScan
@PropertySource("classpath:application.yml")
public class CommonDataApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = new SpringApplicationBuilder(CommonDataApplication.class)
.web(false).headless(true).main(CommonDataApplication.class).run(args);
}
}
豆子
解释了如何做到这一点
在您的情况下,.yml将如下所示:
cassandra:
keyspaceApp: abc
solr:
keyspaceApp: xyz
---
spring:
profiles: test
cassandra:
keyspaceApp: test
您还可以将测试配置放在test/resources文件夹中的一个单独的application-test.yml中,而不使用spring+profiles行,仅此而已:
cassandra:
keyspaceApp: test
这对你没帮助吗?您是否有任何具体问题?我有点困惑,我是否需要在/test/resources中单独使用application.yml,或者在/main/resources中只使用1个application.xml进行开发和测试配置?问题是如果我有单独的.yml文件,/main/resources中的关键URL不会被替换,因为它不在/test/resources中。两个提示:不要使用
@PropertySource
(我不确定它是否适用于YAML,Boot也不需要它);不要把@Profile
放在测试用例上(我想你的意思是@ActiveProfiles
)。
cassandra:
keyspaceApp: test