Cucumber:如果不能对 Cucumber 使用继承,如何创建 BaseSteps class?
Cucumber: how can you create a BaseSteps class if you can’t use inheritance with Cucumber?
Cucumber:如果不能对 Cucumber 使用继承,如何创建 BaseSteps class?
登录步骤继承CommonSteps class:
public class LoginSteps extends CommonSteps {
WebDriver driver = getDriver();
@Given("^User navigates to the \"([^\"]*)\" website$")
public void user_navigates_to_the_website(String url) throws Throwable {
basePage.loadUrl(url);
}
@And("^User entered the \"([^\"]*)\" username$")
public void user_entered_the_username(String username) throws Throwable {
loginPage.setUsername(username);
}
public class CommonSteps {
@After
public void close_browser_window(Scenario scenario) throws Exception {
if (scenario.isFailed()) {
scenario.embed(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES), "image/png");
}
}
}
您可以使用继承,但不能使用 Roberto Pegoraro link 中引用的原因的步骤。我喜欢将我的步骤组织成不同的步骤定义文件。但这会导致互操作性问题。如果您使用 class 变量在步骤之间进行通信,那么这些步骤必须在同一个文件中;除非你使用继承。我创建了一个 UiCommon class 来包含步骤用来在它们之间进行通信的共享 class 变量(例如页面文件实例变量)。每个步骤定义文件都扩展了 UiCommon。现在,我如何重构各个步骤定义文件之间的步骤定义并不重要。他们仍然可以交流。
对于小型项目,这通常不是问题。但是对于一个有多个测试自动化工程师的大型项目,他们需要最小化 git 合并冲突,这很重要。
Java 中的惯用解决方案,即 Cucumber-JVM,当您想在不同 类 中实现的步骤之间共享状态时使用依赖注入。
Cucumber 支持许多不同的依赖注入框架。如果你的项目已经使用了,那很有可能你的依赖框架是支持的。
如果你不使用依赖注入框架,我建议你使用PicoContainer. If you need to know how to use it, I wrote a blog post describing如何在步骤之间共享状态。
Cucumber:如果不能对 Cucumber 使用继承,如何创建 BaseSteps class?
登录步骤继承CommonSteps class:
public class LoginSteps extends CommonSteps {
WebDriver driver = getDriver();
@Given("^User navigates to the \"([^\"]*)\" website$")
public void user_navigates_to_the_website(String url) throws Throwable {
basePage.loadUrl(url);
}
@And("^User entered the \"([^\"]*)\" username$")
public void user_entered_the_username(String username) throws Throwable {
loginPage.setUsername(username);
}
public class CommonSteps {
@After
public void close_browser_window(Scenario scenario) throws Exception {
if (scenario.isFailed()) {
scenario.embed(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES), "image/png");
}
}
}
您可以使用继承,但不能使用 Roberto Pegoraro link 中引用的原因的步骤。我喜欢将我的步骤组织成不同的步骤定义文件。但这会导致互操作性问题。如果您使用 class 变量在步骤之间进行通信,那么这些步骤必须在同一个文件中;除非你使用继承。我创建了一个 UiCommon class 来包含步骤用来在它们之间进行通信的共享 class 变量(例如页面文件实例变量)。每个步骤定义文件都扩展了 UiCommon。现在,我如何重构各个步骤定义文件之间的步骤定义并不重要。他们仍然可以交流。
对于小型项目,这通常不是问题。但是对于一个有多个测试自动化工程师的大型项目,他们需要最小化 git 合并冲突,这很重要。
Java 中的惯用解决方案,即 Cucumber-JVM,当您想在不同 类 中实现的步骤之间共享状态时使用依赖注入。
Cucumber 支持许多不同的依赖注入框架。如果你的项目已经使用了,那很有可能你的依赖框架是支持的。
如果你不使用依赖注入框架,我建议你使用PicoContainer. If you need to know how to use it, I wrote a blog post describing如何在步骤之间共享状态。