我有以下任务
task testGeb(type:Test) {
jvmArgs '-Dgeb.driver=firefox'
include "geb/**/*.class"
testReportDir = new File(testReportDir, "gebtests")
}
系统属性似乎没有进入Geb测试,因为Geb不会产生Firefox来运行测试。当我在Eclipse中设置相同的系统属性并运行测试时,一切正常。
答案 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秒