Concombre 1.2.4 pas de trouver l'étape de définition: “Vous pouvez mettre en œuvre des étapes manquantes avec les extraits ci-dessous” (2016)
Je suis en train de lancer de Concombre avec Maven sur un UNIX-like (malheureusement, je suis obligé d'utiliser Windows, bien que cmd.exe a les mêmes résultats) de la ligne de commande:
mvn clean test -Dcucumber.options="src/test/resources/com/example/sqa/automation_cuke/pages/sample_test.feature"
Résultats dans:
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
...
[INFO] --- exec-maven-plugin:1.2.1:java (default) @ sqa.automation_cuke ---
Feature: My animals Sample
Sample test to use as basis for conversion
Scenario: My animals # sample_test.feature:4
Given that I have my animals
1 Scenarios (1 undefined)
1 Steps (1 undefined)
0m0.000s
You can implement missing steps with the snippets below:
@Given("^that I have my animals$")
public void that_I_have_my_animals() throws Throwable {
//Write code here that turns the phrase above into concrete actions
throw new PendingException();
}
J'ai regardé tous les top Google/, de SORTE que les recherches de ce type de messages d'erreur. Beaucoup, comme Le concombre peut pas trouver les étapes lors de l'exécution d'une seule fonction et Le concombre ne pas trouver d'étape définitions, dire à préciser que ma démarche définitions avec l' -r
et --nécessitent des paramètres, mais ils semblent avoir été retiré de Concombre à un certain point, que je reçois un Unknown option: -r
erreur.
De nombreux autres réponses disent que cette erreur (étrangement) se produit lorsque le @CucumberOptions colle paramètre est pas correctement défini. Mais j'ai essayé les colles et aucun n'a travaillé:
sqa.automation_cuke.pages
path:sqa.automation_cuke.pages
classpath:sqa.automation_cuke.pages
com.example.sqa.automation_cuke.pages
classpath:com.example.sqa.automation_cuke.pages
path:com.example.sqa.automation_cuke.pages
C:/development/cucumber-demo/src/main/java/com/example/sqa/automation_cuke/pages
src/main/java/com/example/sqa/automation_cuke/pages
classpath:C:/development/cucumber-demo/src/main/java/com/example/sqa/automation_cuke/pages
classpath:src/main/java/com/example/sqa/automation_cuke/pages
path:src/main/java/com/example/sqa/automation_cuke/pages
C:\\development\\cucumber-demo\\src\\main\\java\\com\\example\\sqa\\automation_cuke\\pages
src\\main\\java\\com\\example\\sqa\\automation_cuke\\pages
classpath:src\\main\\java\\com\\example\\sqa\\automation_cuke\\pages
path:src\\main\\java\\com\\example\\sqa\\automation_cuke\\pages
J'ai aussi essayé:
- Définition-de la colle dans
-Dcucumber.options
. - Changer mon code source
structure de répertoire à la src/test/java/exemple/automation_cuke,
src/main/java/exemple/automation_cuke,
src/test/resources/exemple/automation_cuke, etc. - De mettre mon .fonctionnalité
fichier principal de...ressources. - Différents textes dans @Donné, comme
@Given("that I have my animals")
.
C'est mon projet de la structure. J'ai pris soin de la structure des ressources correspond le reste du code conformément à cette réponse:
sample_text.fonctionnalité:
Feature: My animals Sample
Sample test to use as basis for conversion
Scenario: My animals
Given that I have my animals
MySampleTest.java:
package com.example.sqa.automation_cuke.pages;
@RunWith(Cucumber.class)
@CucumberOptions(glue = {"com.example.sqa.automation_cuke.pages"})
public class MySampleTest {
@Given("^that I have my animals$")
public void that_I_have_my_animals() throws Throwable {
//Write code here that turns the phrase above into concrete actions
System.out.println("MySampleTest.that_I_have_my_animals() ran!");
new MySample().printMySample();
throw new PendingException();
}
}
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
<artifactId>sqa.automation_cuke</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<cucumber-jvm.version>1.2.4</cucumber-jvm.version>
<selenium.version>2.53.0</selenium.version>
<junit.version>4.12</junit.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>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>--plugin</argument>
<argument>junit:target/cucumber-junit-report/allcukes.xml</argument>
<argument>--plugin</argument>
<argument>pretty</argument>
<argument>--plugin</argument>
<argument>html:target/cucumber-html-report</argument>
</arguments>
</configuration>
<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>${cucumber-jvm.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</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-core</artifactId>
<version>${cucumber-jvm.version}</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber-jvm.version}</version>
</dependency>
<!-- http://mvnrepository.com/artifact/info.cukes/cucumber-java -->
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber-jvm.version}</version>
</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.2</version>
</dependency>
</dependencies>
</project>
Toute aide serait appréciée!
OriginalL'auteur JaneGoodall | 2016-05-26
Vous devez vous connecter pour publier un commentaire.
Vous avez une installation compliquée. La pensée de Gall Loi, je voudrais faire un redémarrage et de construire sur quelque chose qui fonctionne. Une petite mise en route du projet est disponible à https://github.com/cucumber/cucumber-java-skeleton
Télécharger/Clone et de l'exécuter
Cela devrait vous donner une étape manquante, mais il devrait également vous donner quelques étapes définies. Regarder dans le code source et ajouter l'étape manquante dans
src/test/java/skeleton/Stepdefs.java
OriginalL'auteur Thomas Sundberg
Vous devez définir les caractéristiques de l'attribut de concombre options pour que cela fonctionne.
Le remplacement de votre concombre options d'annotation avec:
@CucumberOptions(features = {"classpath:com/example/sqa/automation_cuke/pages/sample_test.feature"},
glue = {"com.example.sqa.automation_cuke.pages"},
devrait le faire fonctionner. Veuillez mettre à jour le post si il ne le fait pas.
Mise à JOUR:
SampleTestStepDefiniton.java
MySampleTest.java
sample_test.fonction
Mise à JOUR
Je pense que le problème avec votre projet, c'est qu'il n'est pas en mesure de trouver les classes de test(ainsi que de l'étape def classes) sur le chemin de classe. Je ne comprends pas pourquoi vous devez définir un chemin de classe de la variable système. Que pourrait être une des raisons de ce problème. Variable de CHEMIN d'accès doit cependant rester et ne doit pas contenir de référence à un projet spécifique
Essayer de se débarrasser de la variable CLASSPATH et le remplacement de vos plugins étiquette avec le texte suivant:
Je pourrais essayer de le faire fonctionner sur plusieurs fenêtre avec des environnements java 8 ainsi que java 7. Tenez-moi au courant!
Classes annotated with @RunWith(Cucumber.class) must not define any Step Definition or Hook methods. Their sole purpose is to serve as an entry point for JUnit. Step Definitions and Hooks should be defined in their own classes. This allows them to be reused across features. Offending class: class com.example.sqa.automation_cuke.pages.MySampleTest
Une fois, je me suis séparé de l'étape de la définition de l'épreuve principale de fichier de classe, j'ai été en mesure de l'exécuter. Espérons que cette aide.Vous ne devez pas supprimer l'annotation @RunWith(Cucumber.class) de votre classe de test, mais, au lieu de passer le @compte tenu de la mise en Œuvre d'une étape de définition de classe. J'ai créé une nouvelle classe comme "MySampleStepDefinition'. Aussi, Vous supprimer la
throw new PendingException()
de votre étape de définition de mise en œuvre. C'est auto-généré et vous invite à mettre en œuvre l'étape. je crois, que d'avoir cette ligne de code est la principale raison de votre code échoueJe suis à l'aide de maven dans un environnement windows. Et le chemin pour la fonctionnalité de fichier correspond aussi.
SampleTestStepDefinition devrait être dans src/test/java..../des pages. Même que MySampleTest. Nous spécifier le package contenant l'étape def classes par de la colle paramètre
Pas de. Si vous êtes d'en faire un projet maven, les dépendances que le projet doit être déclarée dans pom.xml. Pouvez-vous partager les dépendances que vous avez défini?
OriginalL'auteur ritesh.garg