Pasar etiquetas a la tarea de pepino de Gradle

1 minuto de lectura

Sé que podemos pasar etiquetas de pepino a Gradle especificando lo siguiente en el archivo build.gradle:

test {
    systemProperty "cucumber.options", System.getProperty("cucumber.options")
}

Así que cuando corres gradlew test -Dcucumber.options="--tags @CDC" solo ejecutará escenarios con la etiqueta CDC.

Pero mi pregunta es si puedo pasar las opciones de pepino a la tarea de pepino. La razón por la que necesito hacer esto es porque mi tarea de pepino crea un archivo JSON después de ejecutar la tarea, y estoy usando el complemento gradle-cucumber-reporting (https://github.com/SpacialCircumstances/gradle-cucumber-reporting) para generar un informe basado en el archivo JSON.

tarea de pepino

task cucumber() {
    dependsOn assemble, compileTestJava
    doLast {
        javaexec {
            main = "io.cucumber.core.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args = [
            '--plugin', 'html:cucumber-report',
            '--plugin', 'json:cucumber.json', //generates a .json report file
            '--plugin', 'pretty',
            '--plugin', 'usage:cucumber-usage.json',
            '--glue', 'hellocucumber', 'src/test/resources']
        }
    }
}

ejecutando el test La tarea en Gradle no actualiza el archivo JSON.

Aquí está el fragmento de gradle-cucumber-reporting:

cucumberReports {
  outputDir = file('cucumber-pretty-report')
  buildId = '0'
  reports = files('cucumber.json')
}

avatar de usuario de rasklaad
rasklaad

Puede agregar algo como esto a su tarea de pepino:

def tags = getProperty("tags")
args = [
'--plugin', 'html:cucumber-report',
'--plugin', 'json:cucumber.json', //generates a .json report file
'--plugin', 'pretty',
'--plugin', 'usage:cucumber-usage.json',
'--glue', 'hellocucumber', 'src/test/resources',
'--tags', tags]

Entonces puedes ejecutar tu tarea de esta manera:

gradle cucumber -P tags=smoke

¿Ha sido útil esta solución?