Tomcat Gradle测试任务,如何设置用于测试的Spring引导环境?

Tomcat Gradle测试任务,如何设置用于测试的Spring引导环境?,tomcat,gradle,spring-boot,Tomcat,Gradle,Spring Boot,我有一个使用Gradle的Spring Boot项目设置。我有一个application.yml文件,该文件描述了用于两个名为“dev”和“prod”的环境的设置 调用Gradle引导运行任务时,我能够使用build.Gradle中的以下代码将默认环境设置为“dev”: def profile = 'dev' bootRun { args = ["--spring.profiles.active=" + profile] } 但是,如果我向测试任务添加相同的代码,它将不起作用: def

我有一个使用Gradle的Spring Boot项目设置。我有一个
application.yml
文件,该文件描述了用于两个名为“dev”和“prod”的环境的设置

调用Gradle引导运行任务时,我能够使用
build.Gradle
中的以下代码将默认环境设置为“dev”:

def profile = 'dev'
bootRun {
    args = ["--spring.profiles.active=" + profile]
}
但是,如果我向测试任务添加相同的代码,它将不起作用:

def profile = 'dev'
test {
    args = ["--spring.profiles.active=" + profile]
    testLogging {
    showStandardStreams = true
    }
}
堆栈跟踪:

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\Blade\javaworkspace\AutomationStatisticsPortal\build.gradle' line: 43

* What went wrong:
A problem occurred evaluating root project 'AutomationStatisticsPortal'.
> Could not set unknown property 'args' for task ':test' of type org.gradle.api.tasks.testing.Test.
如果没有该代码,测试任务将从“prod”获取配置,这是错误的

我希望bootRun使用“dev”,因为这就是我如何启动应用程序进行手动测试的方法。但我不知道如何确保它在测试任务中也使用“dev”,然后确保Tomcat只使用“prod”

我是否可以假设tomcat将选择“prod”配置,因为如果我不覆盖它,这似乎是默认行为

请告知。

试试这个

test {
  systemProperties['spring.profiles.active'] = 'dev'
}
试试这个

test {
  systemProperties['spring.profiles.active'] = 'dev'
}

这没什么区别。我能让它使用right属性的唯一方法是更改yaml文件。该属性对于dev和prod具有相同的名称。如果我将其重命名为prod,则它将拾取dev属性。但如果它有相同的名字就不会了。我需要保持名称不变。我通过更改yaml文档的顺序来修复它。我先是“dev”,然后是“prod”文档。我只是交换了一下,似乎已经解决了我的问题。真奇怪,没什么区别。我能让它使用right属性的唯一方法是更改yaml文件。该属性对于dev和prod具有相同的名称。如果我将其重命名为prod,则它将拾取dev属性。但如果它有相同的名字就不会了。我需要保持名称不变。我通过更改yaml文档的顺序来修复它。我先是“dev”,然后是“prod”文档。我只是交换了一下,似乎已经解决了我的问题。真奇怪。