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 conCucumber
que es un corredor de prueba para JUnit4 que ejecuta Cucumber desde JUnit. -
@CucumberOptions
le dice aCucumber
dónde encontrar sus cosas. Las cosas principales son:-
features
le dice aCucumber
dónde encontrar los archivos de características. -
glue
le dice aCucumber
qué paquetes contienen las definiciones de paso.
-