在Spring Boot应用程序中,我具有树配置文件:默认配置文件,测试配置文件和持续集成配置文件。
持续集成配置文件定义了备用datasource.url。
测试配置文件定义了另一个liquibase.change-log。
默认配置文件定义了我的应用程序的默认属性。
在本地运行测试时,我使用IntellIJ运行测试
并且为了在本地激活测试配置文件,我在测试中添加了@ActiveProfiles("test")
批注。
当我从CI运行它们时,我已经像这样添加了SPRING_PROFILES_ACTIVE
env变量:
SPRING_PROFILES_ACTIVE=ci,test gradle integrationTest
但是Spring Boot会忽略ci配置文件。
如果删除@ActiveProfiles("test")
批注,则CI可以很好地工作,但是我无法轻松地使用IntelliJ运行测试。
答案 0 :(得分:0)
将@ActiveProfiles("test")
添加到测试类中时,将覆盖SPRING_PROFILES_ACTIVE
环境变量设置的活动配置文件定义。
一种选择是将“ ci”配置文件添加到测试类执行中:
@ActiveProfiles({"test", "ci"})
如果不希望为本地/ IDE测试执行激活“ ci”,另一种选择是删除@ActiveProfiles
批注,并在IDE运行配置中使用-Dspring.profiles.active=test
进行测试
但是,如果要使概要文件“ test”在所有测试中均处于活动状态,则只需删除@ActiveProfiles
批注,从环境CI工作定义中删除“ test”,然后将以下行添加到应用程序中.em / test / resources 文件夹中的.properties / yaml。 (如果您还没有test / resources / application.properties,请知道它会覆盖main / resources / application.properties。)
spring.profiles.include = test