Cambiar pegamento en build.gradle

2 minutos de lectura

Avatar de usuario de Mate Mrše
Mate Sra.

¿Cómo puedo cambiar el glue camino para un proyecto Gradle+Cucumber?

Esta es la parte relevante de un build.gradle archivo:

task cucumber() {
    dependsOn assemble, compileTestJava
    doLast{
        javaexec {
            main = "cucumber.api.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args = ['--plugin', 'pretty', '--glue', 'gradle.cucumber', 'src/main/java/features']
        }
    }
}

Cuando ejecuto el >gradle cucumber desde la línea de comando, me notifican que los escenarios no están definidos, porque el archivo de pegamento no está en el /main carpeta, más bien en /main/java/stepmethods.

¿Cómo le digo eso a Gradle?

  • ¿Es gradle.cucumber el nombre de su paquete? –glue tiene que apuntar al nombre del paquete de sus definiciones de pasos.

    – MikeJRamsey56

    9 de abril de 2019 a las 22:13

  • Lo sé. Eso es lo que quiero cambiar. ¿Cómo puedo hacer eso?

    – Mate Mrše

    10 de abril de 2019 a las 6:40

Avatar de usuario de MikeJRamsey56
MikeJRamsey56

Digamos que tiene un proyecto llamado acmetesting. La estructura de su proyecto podría verse así:

acmetesting
  |
  +---src/main/java
       |
       +---com.acme.testing
            |
            +---steps
                 |
                 +---cucumberjvm302testbed
                      |
                      +---Cucumber302TestBedSteps.java

El archivo Cucumber302TestBedSteps.java es su archivo de definiciones de pasos y en la configuración anterior comenzaría así:

 package com.acme.testing.steps.cucumberjvm302testbed;

 import cucumber.api.java.en.Given;
 import cucumber.api.java.en.Then;
 import cucumber.api.java.en.When;

 import io.cucumber.datatable.DataTable;
 import io.cucumber.datatable.DataTable.TableConverter;
 import io.cucumber.datatable.DataTableType;
 import io.cucumber.datatable.DataTableTypeRegistry;
 import io.cucumber.datatable.DataTableTypeRegistryTableConverter;
 import io.cucumber.datatable.TableEntryTransformer;

 import static org.junit.Assert.assertEquals;

 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 ooo

Entonces su línea de argumentos se vería así:

args = ['--plugin', 'pretty', '--glue', 'com.acme.testing.steps', 'src/main/java/features']

EDITAR
Eliminé cucumberjvm302testbed del valor de pegamento para aumentar la flexibilidad cuando se agregan otras carpetas a los pasos.

  • Eso es todo. Solo necesitaba reemplazar gradle.cucumber (que copié de alguna parte) con mi paquete de definición de pasos real.

    – Mate Mrše

    11 de abril de 2019 a las 7:12

¿Ha sido útil esta solución?