如何将Java SystemProperties传递给Gradle JunitTest

icy*_*sor 5 junit intellij-idea gradle

我得到了一个依赖于Java SystemProperty的JUnit测试(更准确地说,它使用的库依赖于它).我想从IntelliJ开始JUnit测试.因此,我编辑了运行配置并添加了诸如"-DpropertyName = value"之类的VM选项.IntelliJ然后用这样的东西开始gradle:

gradle cleanTest test --tests com.example.Test -DpropertyName=value
Run Code Online (Sandbox Code Playgroud)

当我使用System.getProperty()/ getProperties()从我的Test中检查时,该属性未被传递,因此为null.

如何将属性传递给JunitTest?

icy*_*sor 5

事实证明,IntelliJ只能将这些JVM选项传递给JVM gradle运行,并且gradle不会将这些选项传递给测试.要为将运行测试的JVM指定属性,请编辑该build.gradle文件并添加:

test {
  systemProperty 'propertyName', 'value'
}
Run Code Online (Sandbox Code Playgroud)

或者,相反,添加

test.jvmArgs System.getProperty("test.jvmArgs").split(" ")
Run Code Online (Sandbox Code Playgroud)

build.gradle文件并修改您的运行配置VM选项是类似的

-Dtest.jvmArgs="-DpropertyName=value -Dprop2=value2"
Run Code Online (Sandbox Code Playgroud)