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
方法,如下所示:
我遵循了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 楼答案
正如报告所述:
glue
应该是一个以逗号分隔的包名列表提供的值是属于
automated
包的类名。以下代码应该可以工作:Cucumber在提供的包中搜索所有类以查找步骤方法,这样放置在
automated
包中的任何类都可以