如何使用 cucumber-jvm、cucumber-serenity 和 SerenityObjectFactory 进行多态测试
How do I get polymorphic tests working with cucumber-jvm, cucumber-serenity and SerenityObjectFactory
我发现了一个有趣的博客,大体上解释了如何使用 Cucumber bdd 和 picocontainer 依赖注入来实现多态步骤定义。您可以访问博客 here
我卡住的地方是不知道如何将自动化逻辑保持在 "generic" 接口后面,然后提供两种不同的实现,一种直接与域模型对话以进行单元集成测试,另一种使用 Selenium WebDriver 进行 UI 测试。
谁能告诉我 advise/skeleton 如何实现这个。我非常感谢你帮助社区。
您可以使用实用程序 class 在 class 之间提供变量。
例如,我们以WebDriver驱动启动为例。
public class ClassUtility {
public WebDriver baseDriver;
}
您有一个 class 想要访问 webDriver 的地方。
public class InventoryPage extends ClassUtility {
private ClassUtility driver;
public InventoryPage(ClassUtility driver, ClassUtility fileElementLocator, ClassUtility elementLocatorProperties, ClassUtility page) {
this.driver= driver;
this.page =page;
}
@When("^Open the Google Page$")
public void openInventoryPage() throws Throwable {
driver.baseDriver = new FirefoxDriver();
driver.baseDriver.get("www.google.com");
}
如果您必须注入不同的 class,请以类似的方式进行。
public class IntroductoryPage extends ClassUtility {
private ClassUtility driver;
public IntroductoryPage(ClassUtility driver, ClassUtility logger) {
this.driver= driver;
}
@When("^It should go to Account \"([^\"]*)\"")
public void openIntroductoryPage(String region) throws Throwable {
driver.baseDriver.findElement(By.linkText("link")")).click();
}
如果您需要更多信息,请告诉我。您可以随意使用依赖注入。
我发现了一个有趣的博客,大体上解释了如何使用 Cucumber bdd 和 picocontainer 依赖注入来实现多态步骤定义。您可以访问博客 here
我卡住的地方是不知道如何将自动化逻辑保持在 "generic" 接口后面,然后提供两种不同的实现,一种直接与域模型对话以进行单元集成测试,另一种使用 Selenium WebDriver 进行 UI 测试。
谁能告诉我 advise/skeleton 如何实现这个。我非常感谢你帮助社区。
您可以使用实用程序 class 在 class 之间提供变量。
例如,我们以WebDriver驱动启动为例。
public class ClassUtility {
public WebDriver baseDriver;
}
您有一个 class 想要访问 webDriver 的地方。
public class InventoryPage extends ClassUtility {
private ClassUtility driver;
public InventoryPage(ClassUtility driver, ClassUtility fileElementLocator, ClassUtility elementLocatorProperties, ClassUtility page) {
this.driver= driver;
this.page =page;
}
@When("^Open the Google Page$")
public void openInventoryPage() throws Throwable {
driver.baseDriver = new FirefoxDriver();
driver.baseDriver.get("www.google.com");
}
如果您必须注入不同的 class,请以类似的方式进行。
public class IntroductoryPage extends ClassUtility {
private ClassUtility driver;
public IntroductoryPage(ClassUtility driver, ClassUtility logger) {
this.driver= driver;
}
@When("^It should go to Account \"([^\"]*)\"")
public void openIntroductoryPage(String region) throws Throwable {
driver.baseDriver.findElement(By.linkText("link")")).click();
}
如果您需要更多信息,请告诉我。您可以随意使用依赖注入。