是否可以在Java界面中定义Cucumber测试步骤定义?

时间:2013-10-25 07:53:48

标签: java cucumber automated-tests

我想在Java界面中定义Cucumber测试步骤定义。

public interface ITestSteps {
    @Before
    public void setUpLocal() throws Throwable;

    @When("^Landing screen is visible$")
    public void Landing_Screen_is_visible() throws Throwable;
}

其他2个类将实现此接口:

public class AppleTestSteps implements ITestSteps { ... } 
public class AndroidTestSteps implements ITestSteps { ... } 

我有TestFactory类,它使用环境名称(Android或Apple)获取属性并初始化对象:

ITestSteps steps = TestFactory(platformName);

问题:黄瓜需要逐步获取,而不引用该对象。需要Landing_Screen_is_visible()而不是steps.Landing_Screen_is_visible()

在Cucumber尝试逐步找到需要之前,是否可以实现接口?做静电?

或者可能有另一种实施黄瓜步骤的方式? (步骤相同但实施方式不同)

1 个答案:

答案 0 :(得分:0)

您正在寻找的是驱动程序模式,其中您使用相同的步骤defs但在不同的测试环境中使用时使用不同的应用程序驱动程序示例

abstract class MyApplicationDriver {

     abstract void login();

然后实现Android

class AndriodApplicationDriver extends MyApplicationDriver {

     void login(){};

然后是另一个

class AppleTestDriver extends MyApplicationDriver {

    void login(){};

使用MyApplicationDriver作为测试中的接口,然后在上下文中使用实现,你必须看看World对象如何做到这一点