当前位置: 首页 > 知识库问答 >
问题:

是否可以在Java接口中定义Cucumber测试步骤定义?

萧煜
2023-03-14

我想在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通过名称获取所需的步骤,而不引用对象。采取< code > Landing _ Screen _ is _ visible()而非< code >步骤。land _ Screen _ is _ visible()

在Cucumber尝试按名称找到需求之前,是否可以实现接口?使静态?

或者可能有其他方法来实现cucumber步骤?(步骤相同,但实现方式不同)

共有1个答案

司马英才
2023-03-14

您要寻找的是驱动程序模式,其中您具有相同的步骤和定义,但在不同的测试环境中使用不同的应用程序驱动程序。例如:

abstract class MyApplicationDriver {

     abstract void login();

然后为Android系统实施

class AndriodApplicationDriver extends MyApplicationDriver {

     void login(){};

然后是另一个

class AppleTestDriver extends MyApplicationDriver {

    void login(){};

在测试中使用 MyApplicationDriver 作为接口,然后在上下文中使用实现,你必须查看 World 对象如何执行此操作

 类似资料:
  • 我今天将我的serenity和cucumber测试升级到2.6.0 en cucumber 6版本。只需要更改大量程序包,并且功能文件的步骤不再链接到步骤定义。如果我的cucumberrunner的设置 但是,如果我在功能文件中查看intellij,您将无法再单击步骤以转到定义。当我运行功能文件时,我会得到以下异常: 我不确定是什么地方出了问题,因为相同的代码适用于以前的版本

  • 有没有办法调用cucumber来exe一些用Java编写的特性文件?(不是作为Junit) 我理解您可以通过mvn或Gradle运行Cucumber-JVM作为Junit测试的一部分。 但我不想将此BDD测试作为构建过程的一部分运行。我想在配置项的最后一步调用cucumber,它将执行Ruby、Cpp、Java中的任何步骤定义

  • TL:DR控制台不显示缺少步骤的步骤正则表达式 编辑:添加功能文件

  • 目前,不允许在接口中使用get/set方法(访问器)。例如: 此外,TypeScript 不允许在类方法中使用数组函数表达式:例如: 有没有其他方法可以在接口定义上使用getter和setter?

  • 自从我升级到最新的社区版IntelliJ 15.0.3以来,每当我使用alt-enter从功能定义文件自动生成步骤定义时,它都会以驼峰大小写而不是带下划线的常规样式创建方法。 例如,它过去是这样生成的 但现在它产生了通常的camelCase惯例: 有没有办法把这个设置改回第一种样式? 谢谢

  • 我不能为一个项目用cucumber执行简单的测试。我在Intellij13社区,使用cucumber插件。 我在features目录中编写了我的features文件,我还通过插件实现了创建它们的步骤。intellij可以识别功能文件中的我的步骤,它可以导航并转到步骤实现。当我尝试运行我的场景时,if无法声明“未定义的步骤”。任何帮助都将不胜感激。 以下是我如何组织我的项目: