example java maven selenium-webdriver cucumber-jvm cucumber-junit

cucumber java example



Cómo ejecutar pruebas de pepino-jvm con maven (3)

Las pruebas de estándares de maven deben estar en src/test/java y no en src/main/java . Tu pom.xml se ve bien para mí. Sospecho que si importas tus pruebas y recursos de la carpeta main a la de test , tus pruebas deberían ejecutarse bien.

¿Cómo ejecuto las pruebas de pepino que tengo en las siguientes ubicaciones con Maven?

Las carpetas de origen ''src / main / java'' y ''src / main / resources'' incluyen definiciones de pasos y archivos de características en el paquete ''com.testing.TestProject.login'' creado en cada carpeta de origen.

He incluido complementos y dependencias en el archivo POM, pero cuando ejecuto la prueba de integración de fase maven, las pruebas de pepino no se están ejecutando.

Soy nuevo para Maven. Por favor, hágame saber qué incluir en el archivo POM para ejecutar las pruebas de pepino con Maven.

Aquí está mi archivo POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.testing</groupId> <artifactId>MyMavenProject</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>MyMavenProject</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <cucumber-jvm.version>1.1.5</cucumber-jvm.version> <selenium.version>2.39.0</selenium.version> <junit.version>4.11</junit.version> </properties> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>integration-test</phase> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <executableDependency> <groupId>info.cukes</groupId> <artifactId>cucumber-core</artifactId> </executableDependency> <mainClass>cucumber.api.cli.Main</mainClass> <arguments> <argument>--format</argument> <argument>junit:target/cucumber-junit-report/allcukes.xml</argument> <argument>--format</argument> <argument>pretty</argument> <argument>--format</argument> <argument>html:target/cucumber-html-report</argument> <argument>--tags</argument> <argument>@login</argument> <argument>--glue</argument> <argument>com/</argument> <argument>src/</argument> </arguments> </configuration> <dependencies> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-core</artifactId> <version>1.1.5</version> </dependency> </dependencies> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>${selenium.version}</version> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-picocontainer</artifactId> <version>${cucumber-jvm.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>${cucumber-jvm.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.8.7</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> </dependencies> </project>

Gracias por adelantado.


Sus clases de prueba deben terminar con el sufijo "Prueba".


La forma típica de ejecutar las pruebas JVM de Cucumber desde Maven es unirlas a través de JUnit proporcionando una clase RunCukesTest que activa Pepino desde JUnit.

Una clase típica RunCukesTest puede verse así:

package com.testing; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @CucumberOptions( features = "src/test/resources/features", glue = "com.testing" ) public class RunCukesTest { // NOSONAR SonarLint does not know about @RunWith(Cucumber.class) }

Explicación de los detalles:

  • @RunWith(Cucumber.class) le dice a JUnit que no ejecute esta clase de prueba con su corredor predeterminado, sino con Cucumber que es un corredor de prueba para JUnit4 que ejecuta Cucumber desde JUnit.
  • @CucumberOptions le dice a Cucumber dónde encontrar sus cosas. Las cosas principales son:
    • features le dice a Cucumber dónde encontrar los archivos de características.
    • glue le dice a Cucumber qué paquetes contienen las definiciones de paso.