Запуск определенных тестов с использованием Gradle в нескольких браузерах - PullRequest
0 голосов
/ 05 октября 2018

Я использую Geb / Spock для автоматического тестирования.Я использую Gradle в качестве инструмента сборки.

Я бы хотел вызывать различные задачи gradle для сборки и запуска определенной спецификации (теста) или набора спецификаций.

Я не знаюДостаточно о жизненном цикле сборки Gradle, чтобы полностью понять, что здесь происходит: https://github.com/geb/geb-example-gradle/blob/master/build.gradle

plugins {
    id "idea"
    id "groovy"
    id "com.energizedwork.webdriver-binaries" version "1.4"
    id "com.energizedwork.idea-base" version "1.4"
}

ext {
    // The drivers we want to use
    drivers = ["firefox", "chrome", "chromeHeadless"]

    ext {
        groovyVersion = '2.4.12'
        gebVersion = '2.2'
        seleniumVersion = '3.6.0'
        chromeDriverVersion = '2.32'
        geckoDriverVersion = '0.18.0'
    }
}

repositories {
    mavenCentral()
}

dependencies {
    // If using Spock, need to depend on geb-spock
    testCompile "org.gebish:geb-spock:$gebVersion"
    testCompile("org.spockframework:spock-core:1.1-groovy-2.4") {
        exclude group: "org.codehaus.groovy"
    }
    testCompile "org.codehaus.groovy:groovy-all:$groovyVersion"

    // If using JUnit, need to depend on geb-junit (3 or 4)
    testCompile "org.gebish:geb-junit4:$gebVersion"

    // Drivers
    testCompile "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
    testCompile "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion"
}

webdriverBinaries {
    chromedriver chromeDriverVersion
    geckodriver geckoDriverVersion
}

drivers.each { driver ->
    task "${driver}Test"(type: Test) {
        group JavaBasePlugin.VERIFICATION_GROUP

        outputs.upToDateWhen { false }  // Always run tests

        systemProperty "geb.build.reportsDir", reporting.file("geb/$name")
        systemProperty "geb.env", driver
    }
}

test {
    dependsOn drivers.collect { tasks["${it}Test"] }
    enabled = false
}

tasks.withType(Test) {
    maxHeapSize = "1g"
    jvmArgs '-XX:MaxMetaspaceSize=128m'
    testLogging {
        exceptionFormat = 'full'
    }
}

tasks.withType(GroovyCompile) {
    groovyOptions.forkOptions.memoryMaximumSize = '256m'
}

Я попытался вставить в build.gradle следующее:

task dataGen {
    include '**com.company.project.spec.util/DataGenerationUtilSpec.groovy'
}

task sanity {
    include '**com.company.project.spec.sanity.*'
}

Но вызовэти задачи (gradle sanity) приводят к ошибке сборки:

Could not find method include() for arguments [**com.company.project.spec.util/DataGenerationUtilSpec.groovy] on task ':dataGen' of type org.gradle.api.DefaultTask

Очевидно, что существуют инструкции по сборке, так как я могу вызвать gradle build, и все спецификации запускаются в Chrome, я просто не знаю, какдобавить больше задач

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вы можете использовать аннотацию Spock для управления тестом или спецификацией, см. Пример здесь .

Вы должны будете определить классы аннотаций и определить файл конфигурации Spock для использования этой аннотации.Затем вы аннотируете конкретную спецификацию (или тест).
Теперь вам нужно будет определить файл конфигурации Spock в задаче или из параметра.

0 голосов
/ 05 октября 2018

Я думаю, что эти 2 задачи test, поэтому они должны выглядеть следующим образом:

task dataGen (type: Test) {
    include '**com.company.project.spec.util/DataGenerationUtilSpec.groovy'
}

task sanity (type: Test) {
    include '**com.company.project.spec.sanity.*' 
}
...