有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Cucumber功能文件未绑定到粘合路径

我正试图建立一个简单的Cucumber项目来运行Selenium(Selenium位是不相关的,所以我删除了它们)。结构如下:

├── main
│   └── ...
└── test
│   └── java
│       └── automated
│           └── sayHiTest.feature
│           └── SayHiTestStepdefs.java
│           └── testRunner.java

赛希特。特色:

Feature: Can I say hello?
  Scenario: Say Hello
    Given I visit "https://google.com"
    Then I enter "Hello World"
    Then I should get "Google"

试车手。爪哇:

@RunWith(Cucumber.class)
@CucumberOptions(
        features = "src/test/java/automated/sayHiTest.feature",
        glue = {"automated.SayHiTestStepdefs"}
)
public class testRunner { }

他说了几步。爪哇:

public class SayHiTestStepdefs {
    // @Before methods to set up Selenium driver. 
    @Given("I visit {string}")
    public void i_visit(String string) {
        driver.get(string);
    }
    // more @Then methods to assert "Google".
}

尝试运行testRunner会产生以下错误:

io.cucumber.junit.UndefinedStepException: The step "I visit "https://google.com"" is undefined. 

出于某种原因,它没有看到automated.SayHiTestStepdefs(如果我将它的名称改为abc.SayHiTestStepdefs,它会打印相同的错误)。我为IntelliJ安装了cucumber扩展,它检测到它已正确绑定到i_visit方法,如下所示:

ide view

我遵循了docs中的@CucumberOptions部分,我还检查了其他examples并且语法似乎是正确的。我错过什么了吗

Maven依赖项:

<dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>6.9.0</version>
        </dependency>

        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>6.9.0</version>
        </dependency>
</dependencies>

IntelliJ版本&;关于:

IntelliJ IDEA 2021.1.1 (Community Edition)
Build #IC-211.7142.45, built on April 30, 2021
Runtime version: 11.0.10+9-b1341.41 amd64
VM: Dynamic Code Evolution 64-Bit Server VM by JetBrains s.r.o.
Linux 5.8.0-53-generic
GC: G1 Young Generation, G1 Old Generation
Memory: 750M
Cores: 2
Non-Bundled Plugins: gherkin (211.6693.111), cucumber-java (211.7142.13)
Kotlin: 211-1.4.32-release-IJ7142.27
Current Desktop: ubuntu:GNOME

干杯


共 (1) 个答案

  1. # 1 楼答案

    正如报告所述:

    glue应该是一个以逗号分隔的包名列表

    提供的值是属于automated包的类名。以下代码应该可以工作:

    @RunWith(Cucumber.class)
    @CucumberOptions(
            features = "src/test/java/automated/sayHiTest.feature",
            glue = {"automated"}
    )
    

    Cucumber在提供的包中搜索所有类以查找步骤方法,这样放置在automated包中的任何类都可以