将@ActiveProfiles与SPRING_PROFILES_ACTIVE一起使用

时间:2018-09-18 18:06:34

标签: java spring spring-boot testing continuous-integration

在Spring Boot应用程序中,我具有树配置文件:默认配置文件,测试配置文件和持续集成配置文件。

持续集成配置文件定义了备用datasource.url。

测试配置文件定义了另一个liquibase.change-log。

默认配置文件定义了我的应用程序的默认属性。

在本地运行测试时,我使用IntellIJ运行测试

enter image description here

并且为了在本地激活测试配置文件,我在测试中添加了@ActiveProfiles("test")批注。

当我从CI运行它们时,我已经像这样添加了SPRING_PROFILES_ACTIVE env变量:

SPRING_PROFILES_ACTIVE=ci,test gradle integrationTest 

但是Spring Boot会忽略ci配置文件。

如果删除@ActiveProfiles("test")批注,则CI可以很好地工作,但是我无法轻松地使用IntelliJ运行测试。

1 个答案:

答案 0 :(得分:0)

@ActiveProfiles("test")添加到测试类中时,将覆盖SPRING_PROFILES_ACTIVE环境变量设置的活动配置文件定义。

  1. 一种选择是将“ ci”配置文件添加到测试类执行中:

     @ActiveProfiles({"test", "ci"})
    
  2. 如果不希望为本地/ IDE测试执行激活“ ci”,另一种选择是删除@ActiveProfiles批注,并在IDE运行配置中使用-Dspring.profiles.active=test进行测试

  3. 但是,如果要使概要文件“ test”在所有测试中均处于活动状态,则只需删除@ActiveProfiles批注,从环境CI工作定义中删除“ test”,然后将以下行添加到应用程序中.em / test / resources 文件夹中的.properties / yaml。 (如果您还没有test / resources / application.properties,请知道它会覆盖main / resources / application.properties。)

     spring.profiles.include = test