You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

传递Java Enum类型时Cucumber无法找到步骤定义

问题分析与解决

你遇到的问题是混用了Cucumber表达式和正则表达式语法,导致场景步骤无法匹配到对应的步骤定义。

具体问题点

  1. 步骤定义中同时使用了正则表达式的锚点符号^/$和Cucumber表达式的{state}语法,两种语法不能混合使用。
  2. 字符串参数部分用了正则的\"([^\"]*)\"写法,这和Cucumber表达式的参数语法冲突。

修正方案

1. 调整步骤定义为纯Cucumber表达式语法

保留你的@ParameterType配置(注意补充枚举值的大小写转换,避免valueOf报错),然后修改步骤定义:

@ParameterType("enable|disable")
public State state(String name){
    // 假设State枚举值为ENABLE/DISABLE,需将输入字符串转大写
    return State.valueOf(name.toUpperCase());
}        

@And("I {state} identity provider with name {string}")
public void changeIdentityProviderEnabledStatus(State state, String idpName) {
    // 方法体逻辑
}

2. 为什么这样修改?

  • Cucumber表达式{state}会自动匹配你定义的enable|disable规则,并将字符串转换为State枚举对象。
  • {string}会自动匹配场景中的带引号字符串(比如"identity provider name"),无需手动写正则捕获。
  • 去掉正则锚点^/$,Cucumber表达式默认会全匹配步骤文本。

内容的提问来源于stack exchange,提问作者user17953271

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:54:21