如何使用cucumber-jvm,cucumber-serenity和SerenityObjectFactory进行多态测试

时间:2017-06-13 13:14:08

标签: java dependency-injection cucumber cucumber-jvm cucumber-serenity

我发现了一个有趣的博客,一般解释如何使用黄瓜bdd和picocontainer依赖注入实现多态步骤定义。您可以访问博客here

我遇到的问题是不知道如何将自动化逻辑保留在“通用”接口之后,然后提供两种不同的实现,一种直接与域模型进行单元集成测试,另一种使用Selenium WebDriver用于UI测试。

有人可以给我建议/骨架如何实现这一点。我不能非常感谢你们帮助社区。

1 个答案:

答案 0 :(得分:1)

您可以使用Utility类在类之间提供变量。

例如,让我们以WebDriver驱动程序启动为例。

public class ClassUtility {

    public WebDriver baseDriver; 

}

您有一个要访问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");
}

如果你必须注入不同的课程,那就按照类似的方式进行。

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();   
}

如果您需要其他信息,请与我们联系。您可以根据需要使用依赖注入。