Невозможно запустить функции огурца в режиме отладки в 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 и отредактируйте конфигурацию, чтобы добавить необходимые аргументы. Тогда отладка заработает.

Другие вопросы по тегам