当前位置: 首页 > 知识库问答 >
问题:

Cucumber 1.2.4找不到步骤定义:“您可以使用下面的片段实现缺少的步骤”(2016年)

平学
2023-03-14

我正尝试在类似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。
  • 将源代码目录结构更改为src/test/java/example/automation_cuke、src/main/java/example/automation_cuke、src/test/resources/example/automation_cuke等。
  • 正在将我的.feature文件放入主...资源中。
  • @gived中的各种不同文本,如@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>

任何帮助都将不胜感激!

共有1个答案

易阳朔
2023-03-14

你的设置很复杂。考虑到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')运行时,会找到步骤定义,并按预期执行测试。我已经复习过类似的问题了,在我秃顶之前,我会很感激你的帮助。 -