#gradle #geb
#gradle #geb
Вопрос:
У меня есть следующая задача
task testGeb(type:Test) {
jvmArgs '-Dgeb.driver=firefox'
include "geb/**/*.class"
testReportDir = new File(testReportDir, "gebtests")
}
Кажется, что системное свойство не попадает в тесты Geb, поскольку Geb не запускает Firefox для запуска тестов. Когда я устанавливаю то же системное свойство в Eclipse и запускаю тесты, все работает нормально.
Ответ №1:
Попробуйте использовать системные свойства:
test {
systemProperties['geb.driver'] = 'firefox'
include "geb/**/*.class"
testReportDir = new File(testReportDir, "gebtests")
}
Комментарии:
1. На самом деле это может быть проблемой с Geb. Я подтвердил, что prop передается правильно.
2. В ранних версиях snapshot версии 0.6 была ошибка, которая не позволяла этому работать, но она была устранена в финальной версии 0.6.
Ответ №2:
Вы также можете напрямую задать системное свойство в задаче:
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
Ответ №3:
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 и путь chrome_driver, который я указал в /usr /bin / google_chrome /, и ваш путь варьируется в зависимости от вашего пути.
Ответ №4:
Добавьте 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
Ответ №5:
Я бы рекомендовал выполнить следующее
gradle myTask -DmyParameter=123
с помощью следующего кода
task myTask {
doLast {
println System.properties['myParameter']
}
}
Вывод должен быть
gradle MyTask -DmyParameter=123:MyTask 123
СБОРКА ПРОШЛА УСПЕШНО
Общее время: 2.115 секунд
Комментарии:
1. Это устанавливает свойство только для Gradle JVM, а не для JVM, которая запускает тесты.