当您运行 Runner 类时,它将扫描 features 选项中提到的所有功能文件,然后在 glue 中提到的文本开始的包内的所有步骤定义中加载它们> 选项将被加载。
例如
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = { "pretty","json:target/cucumberreports.json" },
glue = "stepDefinition",
features = "src/test/resources/TestCases/",
tags={"@onlythis"},
dryRun=false
)
public class RunTest {
}
这里所有的特征文件都存在于
src/test/resources/TestCases/
将被加载
然后将加载其中的所有 stepdef 或其子目录
步骤定义
并且每当您从功能执行的步骤开始运行时,黄瓜将寻找与步骤的正则表达式对应的功能并且功能将运行。
例如
每当步骤 当用户在 src/test/resources/TestCases/Login.feature 中输入电子邮件 id 时,黄瓜将在所有 stepdef 类中找到其对应的函数
Login.feature
@LoginValidation
Feature: To smoke test functionalities of app
@Browser @ValidLogin
Scenario: Verify scenario in case of successful login
When User enters email id
And User enters password
Then User clicks on sign in button and able to sign in
它会到达 stepDefinition 的子目录中的类,即在
stepDefinition.ui.home.LoginPageStepDef.java cucumber 会找到带有 @When("^User enters email id$") 的函数并执行该函数。
LoginPageStepDef.java
public class LoginPageStepDef {
LoginPage loginPage = new LoginPage(AttachHooks.driver);
private static Logger LOGGER = Logger.getLogger(LoginPageStepDef.class);
@When("^User enters email id$")
public void user_enters_email_id() throws Throwable {
//LoginPage.obj = loginPage;
loginPage.enterEmailId(ConfigManager.getProperty("UserName"));
}
}