带星号的黄瓜步骤定义

Cucumber step definition with asterisk

我们的功能文件包含长时间测试,可验证用非英语语言编写的多项内容,Given -> When -> Then 结构没有意义。 我尝试用 * 替换功能文件关键字,效果很好,但问题是:

  1. 当以 * Some step 的形式编写新步骤并使用 Alt->Enter 快捷方式生成步骤定义时,IntelliJ IDEA 没有...没有。它只会打开我想放置定义的文件,而无需添加任何代码。我已将 IDE 和插件更新为最新。
  2. 似乎没有任何方法可以让“通用”注释用于星号步骤,只有 GivenWhenThenAnd, But 存在。 * Some step 特征和 @Given("Some step") 定义不太合逻辑。

有没有我可以使用的解决方法?

我认为您只需几个编码步骤即可实现。

  1. 假设您有这样的场景:
Feature: Generic annotation

  Scenario: Testing annotations
    * having asterix
    * use custom generic annotation
  1. 为您的来源添加自定义注释
package click.webelement.cucumber;

import io.cucumber.java.StepDefinitionAnnotation;
import io.cucumber.java.StepDefinitionAnnotations;
import org.apiguardian.api.API;
import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@StepDefinitionAnnotation
@Documented
@Repeatable(MyStep.MySteps.class)
@API(status = API.Status.STABLE)
public @interface MyStep {

    String value();

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    @StepDefinitionAnnotations
    @Documented
    @interface MySteps {
        MyStep[] value();
    }
}
  1. 现在在您的步骤定义中使用它
package click.webelement.cucumber;

public class StepDef {

    @MyStep("having asterix")
    public void doOne(){
        System.out.println("Running having asterix");
    }

    @MyStep("use custom generic annotation")
    public void doTwo(){
        System.out.println("Running use custom generic annotation");
    }

}

UPD

为了使您的 Idea 插件与您的自定义注释一起工作,您需要将该注释放置到

io.cucumber.java.LANG 包,其中 LANG 是您选择的语言的子包。

为了让一切都默认工作,你把它放在

io.cucumber.java.en