我正尝试在类似UNIX的命令行上使用Maven运行Cucumber(不幸的是,我被迫使用Windows,尽管cmd.exe具有相同的结果):
MVN清洁测试-dcucumber.options=“src/test/resources/com/example/sqa/automation_cuke/pages/sample_test.feature”
结果如下:
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();
}
我查看了所有Google/SO搜索结果的顶部,以查找此错误信息和类似错误信息。许多例子,例如Cucumber在运行单个特性时找不到步骤,以及Cucumber找不到步骤定义,都说要用-r
和--require参数指定步骤定义,但它们似乎在某个时候从Cucumber中删除了,因为我得到了一个unknown option:-r
错误。
许多其他答案都说这个错误(奇怪的)发生在@CucumberOptions胶参数定义不正确的时候。但我试过以下几种胶水,没有一种奏效:
我也试过:
-dcucumber.options
中定义--glue。@gived(“That I have my animals”)
。这是我的项目结构。我确保了资源结构与代码的其余部分匹配,如下所示:
Feature: My animals Sample
Sample test to use as basis for conversion
Scenario: My animals
Given that I have my animals
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>
任何帮助都将不胜感激!
你的设置很复杂。考虑到Gall定律,我会做一个重启,并建立在一些可行的东西上。一个小型入门项目可在https://github.com/cucumber/cucumber-java-skeleton获得
下载/克隆并运行
mvn test
这应该会给你一个缺失的步骤,但也会给你一些定义的步骤。查看源代码,并在src/test/java/skeleton/stepdefs.java
中添加缺少的步骤
我已经开发了一个带有Serenity-bdd和Cucumber的测试自动化,用于移动测试。我的问题在下面。 虽然我已经实现了这个方法,但是我又得到了这个。我的跑步者,cucumbersteps和特征文件如下。 跑步者: cucumber步: 特点: 我的项目结构如下所述。 在此处输入图像描述 我试着把胶水改成{“cucumber步”},但什么都没有改变。我不明白为什么问题是调用。有人能帮我吗?
在如下定义的项目结构中, src/main/java--Config(RunCukesTest.java)--步骤定义 当我使用RunAs从
我不能为一个项目用cucumber执行简单的测试。我在Intellij13社区,使用cucumber插件。 我在features目录中编写了我的features文件,我还通过插件实现了创建它们的步骤。intellij可以识别功能文件中的我的步骤,它可以导航并转到步骤实现。当我尝试运行我的场景时,if无法声明“未定义的步骤”。任何帮助都将不胜感激。 以下是我如何组织我的项目:
我遇到了以下问题。我在Intellij中有四个Cucumber特性文件。我通过IntelliJ插件添加了Cucumber支持。在创建了特性之后,我按如下所示编辑了配置,这样我就可以执行特性文件了。 可悲的是,当我尝试使用步骤定义运行cucumber特性时,我得到的提示是“您可以使用下面的代码片段实现缺少的步骤:”但我已经这样做了。我已经将这些片段复制到步骤定义文件中。当我悬停一个场景时,Intel
TL:DR控制台不显示缺少步骤的步骤正则表达式 编辑:添加功能文件
问题 Cucumber在使用CLI运行程序运行时找不到步骤定义,但在使用junit运行程序运行时可以找到。 也就是说,当从linux命令行运行cucumber-jvm时,找到了特性文件,但未找到步骤定义文件,从而生成消息 (完整消息请参阅底部) 但是,通过Maven(例如'mvn test')运行时,会找到步骤定义,并按预期执行测试。我已经复习过类似的问题了,在我秃顶之前,我会很感激你的帮助。 -