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

标签 spring heroku gradle spring-boot build.gradle

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

  • “开发”(用于我正在开发时)
  • “测试”(用于运行测试时)
  • “生产”(用于何时将其部署到生产中[到heroku])

  • 因此,我有四个application * .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内设置 Activity 的Spring配置文件(请注意,我没有对“test”或“build”任务的编辑权限,因为它们来自“spring boot gradle插件”)?
  • 还是Spring Boot中有一种方法可以在运行测试时设置默认的 Activity Spring配置文件?
  • 最佳答案

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

    看起来像这样:

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

    关于spring - 如何为运行测试设置默认的Spring Boot配置文件(不使用环境变量)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37734432/

    相关文章:

    android - 无论我做什么,Unity Android 构建在 Gradle 阶段都会失败

    java - 使用 JSR303 验证整数

    java - Hibernate JCache 5.4.3.Final 不适用于 JCache 5.4.2.Final 配置

    ruby-on-rails - 将 exec 与 heroku bundle 在一起 - 有必要吗?

    ruby-on-rails - CloudFlare SSL + Heroku 自定义域不起作用

    python - Python正则表达式来匹配和替换gradle依赖项输出

    android - gradle - Android Studio 构建速度太慢的 multidex 应用程序

    spring - 将 bean 与数据源绑定(bind)

    java - Spring with AspectJ compile-time weaving causing : java. lang.VerifyError: 非法使用非虚函数调用

    python - Flask 应用程序不在 heroku 服务器上启动