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

Gradle 如何将JVM系统属性传递给测试?,gradle,geb,Gradle,Geb,我有以下任务 task testGeb(type:Test) { jvmArgs '-Dgeb.driver=firefox' include "geb/**/*.class" testReportDir = new File(testReportDir, "gebtests") } 系统属性似乎无法用于Geb测试,因为Geb不会生成Firefox来运行测试。当我在Eclipse中设置相同的系统属性并运行测试时,一切正常 尝试使用系统属性: test { systemP

我有以下任务

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

系统属性似乎无法用于Geb测试,因为Geb不会生成Firefox来运行测试。当我在Eclipse中设置相同的系统属性并运行测试时,一切正常

尝试使用系统属性:

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

我建议你做以下几点

gradle myTask -DmyParameter=123
使用以下代码

task myTask {
    doLast {
        println System.properties['myParameter']
    }
 }
输出应该是

gradle myTask-DmyParameter=123 :我的任务 123

建设成功


总时间:2.115秒

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

task testGeb(type:Test) {
    System.setProperty('geb.driver', 'firefox')}
(上述解决方案也适用于不同于
测试的任务类型)

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

task testGeb(type:Test) {
    jvmArgs project.gradle.startParameter.systemPropertiesArgs.entrySet().collect{"-D${it.key}=${it.value}"}
}
然后您可以运行:
/gradlew testGeb-D[anyArg]=[anyValue]
,在您的例子中:
/gradlew testGeb-Dgeb.driver=firefox

Below code works fine for me using Gradle and my cucumber scenarios are passing perfectly. Add below code in your build.gradle file:

//noinspection GroovyAssignabilityCheck

test{

    systemProperties['webdriver.chrome.driver'] = '/usr/bin/google_chrome/chromedriver'

}

注意:我使用了Ubuntu操作系统和我在/usr/bin/google\u chrome/中指定的chrome\u驱动程序路径,您的路径根据您的路径而变化。

在任务中添加
systemProperties System.getProperties()

test {
  ignoreFailures = false
  include "geb/**/*.class"
  testReportDir = new File(testReportDir, "gebtests")
  // set a system property for the test JVM(s)
  systemProperties System.getProperties()
}
因此,在运行测试时,它将是可配置的。比如说

gradle -Dgeb.driver=firefox test
gradle -Dgeb.driver=chrome test 

这实际上可能是Geb的一个问题。我确认该道具已正确传递。0.6的早期快照版本中存在一个错误,可能会阻止此操作,但它已在0.6最终版本中得到解决。这仅为Gradle JVM设置属性,而不是为运行测试的JVM设置属性。