带星号的黄瓜步骤定义
Cucumber step definition with asterisk
我们的功能文件包含长时间测试,可验证用非英语语言编写的多项内容,Given -> When -> Then
结构没有意义。
我尝试用 *
替换功能文件关键字,效果很好,但问题是:
- 当以
* Some step
的形式编写新步骤并使用 Alt->Enter 快捷方式生成步骤定义时,IntelliJ IDEA 没有...没有。它只会打开我想放置定义的文件,而无需添加任何代码。我已将 IDE 和插件更新为最新。
- 似乎没有任何方法可以让“通用”注释用于星号步骤,只有
Given
、When
、Then
、And
, But
存在。 * Some step
特征和 @Given("Some step")
定义不太合逻辑。
有没有我可以使用的解决方法?
我认为您只需几个编码步骤即可实现。
- 假设您有这样的场景:
Feature: Generic annotation
Scenario: Testing annotations
* having asterix
* use custom generic annotation
- 为您的来源添加自定义注释
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();
}
}
- 现在在您的步骤定义中使用它
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
我们的功能文件包含长时间测试,可验证用非英语语言编写的多项内容,Given -> When -> Then
结构没有意义。
我尝试用 *
替换功能文件关键字,效果很好,但问题是:
- 当以
* Some step
的形式编写新步骤并使用 Alt->Enter 快捷方式生成步骤定义时,IntelliJ IDEA 没有...没有。它只会打开我想放置定义的文件,而无需添加任何代码。我已将 IDE 和插件更新为最新。 - 似乎没有任何方法可以让“通用”注释用于星号步骤,只有
Given
、When
、Then
、And
,But
存在。* Some step
特征和@Given("Some step")
定义不太合逻辑。
有没有我可以使用的解决方法?
我认为您只需几个编码步骤即可实现。
- 假设您有这样的场景:
Feature: Generic annotation
Scenario: Testing annotations
* having asterix
* use custom generic annotation
- 为您的来源添加自定义注释
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();
}
}
- 现在在您的步骤定义中使用它
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