Невозможно запустить функции огурца в режиме отладки в intellij, используя gradle
Когда я запускаю свою конфигурацию в режиме отладки, все тесты выполняются без остановки на контрольных точках. Кто-нибудь знает, как запустить / отладить функции с помощью Gradle?
Я также попытался настроить приложение, но системные свойства "geb.browser и geb.environment" не устанавливаются, что вызывает исключение нулевого указателя.
Конфигурация:
build.gradle:
import org.apache.tools.ant.taskdefs.condition.Os
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.github.samueltbrown:gradle-cucumber-plugin:0.9"
classpath "info.cukes:cucumber-core:1.2.4"
}
}
ext {
ext {
groovyVersion = '2.4.4'
gebVersion = '0.12.2'
seleniumVersion = '2.48.2'
chromeDriverVersion = '2.20'
cucumberJvmVersion = '1.2.2'
}
}
apply plugin: 'groovy'
apply plugin: 'java'
apply from: "gradle/osSpecificDownloads.gradle"
apply plugin: "com.github.samueltbrown.cucumber"
apply from: "gradle/idea/idea.gradle"
repositories {
mavenCentral()
}
dependencies {
testCompile "org.gebish:geb-core:$gebVersion"
testCompile "org.codehaus.groovy:groovy-all:$groovyVersion"
// HttpBuilder
testCompile "org.codehaus.groovy.modules.http-builder:http-builder:0.7.1"
// Selenium support
testCompile "org.seleniumhq.selenium:selenium-support:$seleniumVersion"
testCompile "org.seleniumhq.selenium:selenium-api:$seleniumVersion"
testCompile "info.cukes:cucumber-core:$cucumberJvmVersion"
testCompile "info.cukes:cucumber-groovy:$cucumberJvmVersion"
testCompile "io.jdev.geb:geb-cucumber:0.3"
cucumberRuntime "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion"
cucumberRuntime "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
}
cucumber {
formats = [
'pretty', // prints nice format out to the console
'html:build/reports/cucumber', // html
'junit:build/cucumber.xml' // junit format for integration with CI tool etc
]
glueDirs = ['src/test/groovy/com/stepsDefs']
featureDirs = ['src/cucumber/resources']
}
tasks.cucumber {
dependsOn unzipChromeDriver
final def environment = System.getProperty('geb.environmemt')
// set environments
switch (environment) {
case 'alpha':
System.setProperty("geb.build.baseUrl", "http://www.google.com")
System.setProperty("apiKey", "")
break
case 'ci':
System.setProperty("geb.build.baseUrl", "http://www.google.com")
System.setProperty("apiKey", "")
break
case 'silo122':
System.setProperty("geb.build.baseUrl", "http://www.google.com")
System.setProperty("apiKey", "")
break
default:
println("Environment argument is not supported - Available options:\n- alpha\n- ci\n- local\n- silo122\n- stage")
System.exit(0)
break
}
def chromeDriverFilename = Os.isFamily(Os.FAMILY_WINDOWS) ? "chromedriver.exe" : "chromedriver"
jvmOptions.systemProperties([
"webdriver.chrome.driver": new File(unzipChromeDriver.outputs.files.singleFile, chromeDriverFilename).absolutePath,
"geb.cucumber.step.packages": "pages",
"geb.env": System.getProperty("geb.browser"),
"geb.build.baseUrl":System.getProperty("geb.build.baseUrl"),
"envName": System.getProperty("geb.environmemt")
])
}
apply from: "gradle/ci.gradle"
2 ответа
Где установлены ваши контрольные точки? Если они есть в вашем файле функций, то, к сожалению, вы не можете отлаживать их, так как они анализируются во время выполнения огурцом. Точки останова должны быть внутри ваших файлов определений или любого другого исходного файла. Если у вас есть повторяющиеся шаги в файле возможностей, вы можете попробовать нажать pause в IDE прямо перед тем шагом, на котором вы хотите отладить попадания, а затем установить новую точку останова в коде, который вы хотите отлаживать.
Вы можете реорганизовать сборку Gradle, чтобы использовать оболочку JUnit для Cucumber, как описано в этом ответе для аналогичной проблемы для VS Code. Это означает, что вам больше не понадобится плагин огурца для Gradle. Затем повторно импортируйте сборку gradle в IntelliJ и при необходимости щелкните правой кнопкой мыши тестовую задачу в IntelliJ и отредактируйте конфигурацию, чтобы добавить необходимые аргументы. Тогда отладка заработает.