我的build.gradle中定义了一些环境变量,我希望IntelliJ在运行/调试单元测试或其他类型的测试时自动加载(包括覆盖和单独的测试运行)
示例:
的build.gradle
plugins {
id 'org.unbroken-dome.test-sets' version '1.4.2'
}
apply plugin: 'java'
apply plugin: 'idea'
testSets {
integrationTest {
dirName = 'integration-test'
}
}
test {
environment 'MY_ENV_VAR_1', 'my_env_value_1'
}
integrationTest {
environment 'MY_ENV_VAR_1', 'my_env_value_1000'
}
测试方法(在测试和集成测试dirs中)
@Test
public void test() {
System.out.println(System.getenv("MY_ENV_VAR_1"));
}
运行
gradle test
打印出my_env_value_1
gradle integrationTest
打印出my_env_value_1000
我单击了IntelliJ的gradle项目窗格中的“刷新所有gradle项目”按钮。没变。 问题不仅仅是作用于环境变量。能够将系统属性或其他从gradle加载到IntelliJ中的任何运行/调试模式也很不错。
答案 0 :(得分:0)
在IntelliJ中,请确保将IDE构建/运行操作委派给Gradle,而不是通过IntelliJ本地处理。如果没有勾选,IntelliJ将尝试使用它知道的属性来解析这些变量,这些属性可能不正是您正在寻找的。 p>
答案 1 :(得分:0)
IntelliJ不直接支持此功能。您可以做的最好的事情是使用Idea插件生成Intellij项目文件,并更新gradle构建文件以调整输出。
IntelliJ中的环境变量可以定义为运行配置的一部分,因此您可以调整gradle构建以更新单元测试的默认运行配置。
作为原型,将以下内容添加到build.gradle:
idea.workspace.iws.withXml { provider ->
def runManagerNode = provider.asNode().component.find {it.@name == 'RunManager'} as Node
def defaultConfigNode = runManagerNode.configuration.find {it.@default=='true' && it.@type=='JUnit'} as Node
def envsNode = defaultConfigNode.envs[0] as Node
envsNode.appendNode('env', [name: 'MY_ENV_VAR_1', value: test.environment.MY_ENV_VAR_1])
}
现在运行'gradlew cleanIdea idea'并打开生成的项目。
转到run->编辑配置 - > defaults-> junit,您将看到环境变量的值现已传递到IntelliJ。
这样做可行,但有一些问题需要一些思考/工作: