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

时间:2011-04-12 20:43:55

标签: gradle geb

我有以下任务

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

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

5 个答案:

答案 0 :(得分:16)

尝试使用系统属性:

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

答案 1 :(得分:5)

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

task testGeb(type:Test) {
    System.setProperty('geb.driver', 'firefox')}

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

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

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

答案 2 :(得分:1)

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_chrome /中指定的chrome_driver路径,并且您的路径因路径而异。

答案 3 :(得分:1)

在您的任务中添加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 

答案 4 :(得分:0)

我建议做以下

gradle myTask -DmyParameter=123

使用以下代码

task myTask {
    doLast {
        println System.properties['myParameter']
    }
 }

输出应为

gradle myTask -DmyParameter = 123    :myTask    123

建立成功

总时间:2.115秒