Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从integration test或default.yml运行时加载特定于测试的属性_Java_Spring_Integration Testing_Spring Boot - Fatal编程技术网

Java 从integration test或default.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

在运行集成测试时是否可以加载特定于测试的属性。在这种情况下,keyspaceApp:test和正常运行时应加载keyspaceApp:abc

.yml文件

 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