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

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

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

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

有人可以给我建议/框架如何实现这一点。我非常感谢您对社区的帮助。

最佳答案

您可以使用实用程序类在类之间提供变量。

例如,我们以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");
}

如果您必须注入(inject)不同的类,请以类似的方式进行。

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

如果您需要更多信息,请告诉我。您可以根据需要尝试依赖注入(inject)。

关于java - 如何使用 cucumber-jvm、cucumber-serenity 和 SerenityObjectFactory 进行多态测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44522612/

相关文章:

java - 未报告的异常SQLException;必须捕获或声明抛出错误

java - 具有日期范围的 HashMap

java - 运行 jdbc 程序时线程 "main"java.sql.SQLException 中出现异常?

c# - Autofac 和 Contract 类

c# - 使用 ResolveUnregisteredType 事件在 Simple Injector 中注入(inject)可能会根据请求更改的数据库配置值

java - 无法让 Spring 依赖注入(inject)工作

eclipse - 如何在 eclipse 中禁用 cucumber 消息

java - 是否可以在不借助 XML 的情况下为 Spring 创建自定义 Jackson objectMapper?

ios - 如何使用Frank Cucumber从UIImagePickerController选择图片?

cucumber - 如何读取 Karate 框架功能文件中的响应 header value ?