在Spring Boot应用程序的集成测试中使用外部文件覆盖application.yml中的属性

问题描述

application.yml中,我列出了用于缓存的自定义配置。

caches:
  - name: cache1
    ttl: 30
  - name: cache2
    ttl: 60

我有一个集成测试,我想从外部文件覆盖application.yaml中指定的值。

我有几个用于不同测试的外部缓存配置文件test-caches-1.ymltest-caches-2.yml等。文件内容看起来很简单

caches:
  - name: test-cache1
    ttl: 30
  - name: test-cache2
    ttl: 60

这是我的考试

@SpringBoottest(webEnvironment = SpringBoottest.WebEnvironment.MOCK)
@ContextConfiguration(classes = MyApplication.class)
@RunWith(springrunner.class)
@ActiveProfiles("test")
@TestPropertySource(
        properties = { "features.distributed-cache = true" },locations = {"classpath:/caches-configuratilon/test-caches.yml"})
public class CachingConfigurationTest {
    @Autowired
    CachesConfigurationProperties cachesConfigurationProperties;    

    @Test
    public void mytest() {
        // ...
    }
}

如果在测试执行过程中删除locations = {"classpath:/caches-configuratilon/test-caches.yml"}属性,我会看到application.yml中的所有缓存。如果将test-caches.yml内容放到application-test.yml,我会看到在那里配置了缓存。

但是,当我将这些缓存放入test-caches.yml时,什么也没有。有什么想法可以用外部文件application.yml中的值覆盖test-caches.yml中的值吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...