配置文件特定的 application.properties 在单元测试期间未应用

Posted

技术标签:

【中文标题】配置文件特定的 application.properties 在单元测试期间未应用【英文标题】:Profile Specific application.properties Not Applied During Unit Test 【发布时间】:2018-09-21 18:27:39 【问题描述】:

我正在编写集成测试,我想使用 Spring 配置文件为每个环境配置属性。但是,我在 src/test/resources中找到了配置文件特定的应用程序属性(例如 application-dev.ymlapplication-prod.yml) > 目录的激活方式与它们在 src/main/resources 中的方式不同。使用-Dspring.profiles.active=prod 运行测试似乎没有效果。是否可以从命令行激活配置文件进行测试?

注意:@ActiveProfiles 还不够,因为我想针对多个环境运行相同的测试。

【问题讨论】:

【参考方案1】:

我不知道您是否从工作区复制了文件名,但“applicaiton-prod.yml”中有错字。这可能是原因。

【讨论】:

谢谢,但我项目中的文件拼写正确。 在没有看到项目设置的情况下做不了太多事情。也许来自***.com/questions/39690094 的答案会有所帮助。【参考方案2】:

我找到了 similar issue reported in GitHub 并且 solution 适用于我的问题。 JVM 系统属性spring.profiles.active 没有在 Gradle 中获得。所以我修改了我的任务如下

integrationTest 
    systemProperties = System.properties

【讨论】:

以上是关于配置文件特定的 application.properties 在单元测试期间未应用的主要内容,如果未能解决你的问题,请参考以下文章

Spring配置文件无法解析正确的文件

spring boot 加载配置 文件

Spring Bootspring boot多环境配置及配置文件

SpringCloud 项目搭建:服务配置中心搭建

如何为测试禁用 AWS 参数存储自动配置?

如何在 Freemarker 模板中访问 Spring 应用程序属性?