Comment puis-je exécuter les tests de concombre que j'ai dans les emplacements suivants avec Maven.
Les dossiers source 'src/main/Java' et 'src/main/ressources' incluent des définitions d'étape et des fichiers de fonctionnalités dans le package 'com.testing.TestProject.login' créé dans chaque dossier source.
J'ai inclus des plugins et des dépendances dans le fichier POM mais lorsque j'exécute le test d'intégration de phase maven, les tests de concombre ne sont pas exécutés.
Je suis nouveau chez Maven. Veuillez me faire savoir quoi inclure dans le fichier POM pour exécuter les tests de concombre avec Maven.
Voici mon fichier 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>
Merci d'avance.
Vos classes de test doivent se terminer par le suffixe "Test".
La manière typique d'exécuter des tests JVM Cucumber à partir de Maven est de les faire passer par JUnit en fournissant une classe RunCukesTest
qui déclenche Cucumber à partir de JUnit.
Une classe RunCukesTest typique peut ressembler à ceci:
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)
}
Explication des détails:
@RunWith(Cucumber.class)
indique à JUnit de ne pas exécuter cette classe de test avec son exécuteur par défaut, mais plutôt avec Cucumber
qui est un exécuteur de test pour JUnit4 qui exécute Cucumber à partir de JUnit.@CucumberOptions
Indique à Cucumber
où trouver son contenu. Les principales choses sont: features
indique à Cucumber
où trouver les fichiers de fonctionnalités.glue
indique à Cucumber
quels packages contiennent les définitions d'étape.Selon les normes Maven, les tests doivent être en src/test/Java
et pas dans src/main/Java
. Votre pom.xml me va bien. Je soupçonne que si vous importez vos tests et ressources du dossier main
dans le dossier test
, vos tests devraient s'exécuter très bien.