【问题标题】:Cucumber - Undefined Steps Though definedCucumber - 未定义的步骤虽然已定义
【发布时间】:2018-08-28 16:06:42
【问题描述】:

我正在创建一个简单的 Selenium Cucumber 项目并使用“Lambda 表达式构造函数”方式为功能文件定义步骤,但是当我运行 CucumberTest 类时,我遇到了失败异常

有未定义的步骤!

我的 StepDefinition 低于 1

而功能文件是下面的一个

CucumberRunner 类如下:

如果我使用 Lambda 表达式,请建议我调用步骤定义文件有什么不同的方法吗?

【问题讨论】:

  • 您使用的是哪个 IDE?
  • Eclipse...你知道我所问的解决方案吗?
  • 您在控制台中遇到的错误还有什么?可以发一下吗
  • 请将您的代码添加为文本,而不是图片
  • 可能您的StepDef 类不在跑步者的glue 选项中定义的包中。

标签: selenium java-8 cucumber cucumber-java


【解决方案1】:

正如我在评论中已经提到的。选项 glue 需要一个包名列表,而不是目录。改变它从

glue = {"src/test/java/my.project.automation.wolfram_alpha" }

glue = {"my.project.automation.wolfram_alpha" }

会解决问题。

在下面找到有效的 sn-ps。假设如下结构

src/test/java/my/project/automation/wolfram_alpha/StepDef.java
src/test/java/my/project/automation/wolfram_alpha/cucumberTest.java
src/test/resources/wolfram.feature
pom.xml

pom.xml(依赖部分)

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <version.cucumber>3.0.2</version.cucumber>
</properties>
<dependencies>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java8</artifactId>
        <version>${version.cucumber}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>${version.cucumber}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>${version.cucumber}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

cucumberTest.java

package my.project.automation.wolfram_alpha;

import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;

@CucumberOptions(
        features = { "src/test/resources/wolfram.feature" },
        glue = {"my.project.automation.wolfram_alpha" }
)
public class cucumberTest extends AbstractTestNGCucumberTests {
}

StepDef.java

package my.project.automation.wolfram_alpha;

import cucumber.api.java8.En;

public class StepDef implements En {
    public StepDef() {
        Given("URL of WolframAlpha" , () -> {
            System.out.println("Given URL of WolframAlpha");
        });
        When("user logged in as {string} with {string}" , (String user, String password) -> {
            System.out.printf("When user logged in as {%s} with {%s}%n", user, password);
        });
        And("login is successful" , () -> {
            System.out.println("And login is successful");
        });
        And("user search for a {string}" , (String topic) -> {
            System.out.printf("And user search for a {%s}%n", topic);
        });
        Then("results are displayed in a creative way" , () -> {
            System.out.println("Then results are displayed in a creative way");
        });
    }
}

wolfram.feature来自问题

使用mvn test 运行测试会产生以下输出。

Running my.project.automation.wolfram_alpha.cucumberTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@726f3b58
Given URL of WolframAlpha
When user logged in as {user} with {password}
And login is successful
And user search for a {IDOL}
Then results are displayed in a creative way

1 Scenarios (1 passed)
5 Steps (5 passed)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2022-08-19
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多