簡體   English   中英

Cucumber 功能文件未綁定到膠水路徑

[英]Cucumber feature file isn't bound to glue path

我正在嘗試設置一個簡單的 Cucumber 項目以與 Selenium 一起運行(Selenium 位無關緊要,因此我刪除了它們)。 結構如下:

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

sayHiTest.feature:

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

testRunner.java:

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

SayHiTestStepsdefs.java:

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方法,如下所示:

側視圖

我遵循了文檔中的@CucumberOptions 部分,我還檢查了其他示例,並且語法似乎已檢查。 我錯過了什么嗎?

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

干杯。

如 Cucumber 文檔中所述:

glue應該是一個逗號分隔的 package 名稱列表。

提供的值是 class 名稱,它是automated package 的一部分。 以下代碼應該可以工作:

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

Cucumber 在提供的包中搜索所有類以查找步驟方法,這樣放置在automated package 中的任何 class 都可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM