黄瓜特征文件未绑定到粘合路径
Cucumber feature file isn't bound to glue path
我正在尝试使用 Selenium 为 运行 设置一个简单的 Cucumber 项目(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 安装了一个黄瓜扩展,它检测到它已正确绑定到 i_visit
方法,如下所示:
我按照 docs, I also checked other examples 中的 @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
干杯。
如黄瓜中所述docs:
glue
应该是包名称的逗号分隔列表。
提供的值是 class 名称,它是 automated
包的一部分。以下代码应该有效:
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/java/automated/sayHiTest.feature",
glue = {"automated"}
)
Cucumber 在提供的包中的所有 class 中搜索步骤方法,这样放在 automated
包中的任何 class 都可以。
我正在尝试使用 Selenium 为 运行 设置一个简单的 Cucumber 项目(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 安装了一个黄瓜扩展,它检测到它已正确绑定到 i_visit
方法,如下所示:
我按照 docs, I also checked other examples 中的 @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
干杯。
如黄瓜中所述docs:
glue
应该是包名称的逗号分隔列表。
提供的值是 class 名称,它是 automated
包的一部分。以下代码应该有效:
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/java/automated/sayHiTest.feature",
glue = {"automated"}
)
Cucumber 在提供的包中的所有 class 中搜索步骤方法,这样放在 automated
包中的任何 class 都可以。