如何将JVM系统属性传递给我的测试?

Ray*_*lus 5 gradle geb

我有以下任务

task testGeb(type:Test) {
   jvmArgs '-Dgeb.driver=firefox'
   include "geb/**/*.class"
   testReportDir = new File(testReportDir, "gebtests")
}
Run Code Online (Sandbox Code Playgroud)

系统属性似乎没有进入Geb测试,因为Geb不会产生Firefox来运行测试.当我在Eclipse中设置相同的系统属性并运行测试时,一切正常.

Nik*_*sov 16

尝试使用系统属性:

test {
   systemProperties['geb.driver'] = 'firefox'
   include "geb/**/*.class"
   testReportDir = new File(testReportDir, "gebtests")
}
Run Code Online (Sandbox Code Playgroud)


Olg*_*zek 5

您还可以在任务中直接设置系统属性:

task testGeb(type:Test) {
    System.setProperty('geb.driver', 'firefox')}
Run Code Online (Sandbox Code Playgroud)

(上面的解决方案也适用于不同的任务类型Test)

或者,如果您希望能够从命令行传递不同的属性,则可以在任务定义中包含更灵活的解决方案:

task testGeb(type:Test) {
    jvmArgs project.gradle.startParameter.systemPropertiesArgs.entrySet().collect{"-D${it.key}=${it.value}"}
}
Run Code Online (Sandbox Code Playgroud)

然后你可以运行: ./gradlew testGeb -D[anyArg]=[anyValue],在你的情况下:./gradlew testGeb -Dgeb.driver=firefox