Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
如何设置运行测试的默认Spring引导配置文件(不使用环境变量)?_Spring_Heroku_Gradle_Spring Boot_Build.gradle - Fatal编程技术网

如何设置运行测试的默认Spring引导配置文件(不使用环境变量)?

如何设置运行测试的默认Spring引导配置文件(不使用环境变量)?,spring,heroku,gradle,spring-boot,build.gradle,Spring,Heroku,Gradle,Spring Boot,Build.gradle,我有一个Spring Boot项目,使用gradle,有三个Spring配置文件: “发展”(当我在发展时) “测试”(用于运行测试时) “生产”(用于在生产中部署[到heroku]) 因此,我有四个应用程序*.yml文件: application.yml(包含所有共享默认值) application-development.yml application-test.yml application-production.yml 这些环境都运行良好。问题是,当我将代码部署到heroku时,

我有一个Spring Boot项目,使用gradle,有三个Spring配置文件:

  • “发展”(当我在发展时)
  • “测试”(用于运行测试时)
  • “生产”(用于在生产中部署[到heroku])
因此,我有四个应用程序*.yml文件:

  • application.yml(包含所有共享默认值)
  • application-development.yml
  • application-test.yml
  • application-production.yml
这些环境都运行良好。问题是,当我将代码部署到heroku时,heroku会运行“gradle build”(它会运行“gradle test”),heroku没有设置环境变量的选项。因此,我无法设置活动配置文件。因此,当它运行测试时,它正在使用application.yml,而不使用application-test.yml中的覆盖。因此,测试显然失败了

到目前为止,我唯一的解决方案是将所有application-test.yml默认值放入application.yml,然后在其他配置文件中再次覆盖它们,但这显然远远不够理想

有没有办法:

  • 从gradle中设置活动的Spring概要文件(注意,我没有对“测试”或“构建”任务的编辑权限,因为它们来自“Spring引导gradle插件”)
  • 或者,在SpringBoot中是否有一种方法可以在测试运行时设置默认的活动Spring配置文件

如果您使用的是
@WebIntegrationTest
@IntegrationTest
,则可以使用注释将配置文件设置为属性值

看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@WebIntegrationTest({"spring.profiles.active=test"})
public class MyWebIntegrationTests {
    // ...
} 

如果您使用的是
@WebIntegrationTest
@IntegrationTest
,则可以使用注释将配置文件设置为属性值

看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@WebIntegrationTest({"spring.profiles.active=test"})
public class MyWebIntegrationTests {
    // ...
} 

我认为乔希斯特的答案是正确的

无论如何,我猜您也可以将
SPRING\u PROFILES\u设置为ACTIVE
环境变量,如下所示:

 $ heroku config:set SPRING_PROFILES_ACTIVE=test
 Adding config vars and restarting myapp... done, v12
 SPRING_PROFILES_ACTIVE: test

 $ heroku config
 SPRING_PROFILES_ACTIVE: test

 $ heroku config:get SPRING_PROFILES_ACTIVE
 test

 $ heroku config:unset SPRING_PROFILES_ACTIVE
 Unsetting SPRING_PROFILES_ACTIVE and restarting myapp... done, v13

我认为乔希斯特的答案是正确的

无论如何,我猜您也可以将
SPRING\u PROFILES\u设置为ACTIVE
环境变量,如下所示:

 $ heroku config:set SPRING_PROFILES_ACTIVE=test
 Adding config vars and restarting myapp... done, v12
 SPRING_PROFILES_ACTIVE: test

 $ heroku config
 SPRING_PROFILES_ACTIVE: test

 $ heroku config:get SPRING_PROFILES_ACTIVE
 test

 $ heroku config:unset SPRING_PROFILES_ACTIVE
 Unsetting SPRING_PROFILES_ACTIVE and restarting myapp... done, v13

工作完美。谢谢工作完美。谢谢谢谢你的帮助。但这并不是我所需要的,因为这也会影响正在运行的应用程序;然而,我只希望在测试运行时设置“测试”概要文件(作为部署过程的一部分),感谢您的帮助。但这并不是我所需要的,因为这也会影响正在运行的应用程序;而我只希望在测试运行时设置“测试”配置文件(作为部署过程的一部分)