我想在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);
问题:Cucumber 按名称执行所需的步骤,而不引用对象。需要Landing_Screen_is_visible()
而不是steps.Landing_Screen_is_visible()
是否可以在黄瓜尝试按名称查找需求之前实现接口?做静态?
或者可能有另一种实现黄瓜步骤的方法?(步骤相同,但实现方式不同)
您寻找的是驱动程序模式,在该模式中,您具有相同的步骤defs,但在不同的测试环境中使用时使用不同的应用程序驱动程序示例
abstract class MyApplicationDriver {
abstract void login();
然后实现安卓
class AndriodApplicationDriver extends MyApplicationDriver {
void login(){};
然后是另一个
class AppleTestDriver extends MyApplicationDriver {
void login(){};
在测试中使用MyApplicationDriver作为接口,然后在上下文中使用实现,你必须查看World对象如何做到这一点