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设置属性。