升级Cucumber至6.9.1后Scenario Outline Examples无法传入空字符串的问题咨询
问题触发原因
- Cucumber 6.9.1版本调整了Scenario Outline中Examples表格的单元格解析规则:旧版本会将无实际内容的空白单元格解析为长度为0的空字符串
"",升级到6.9.1后,版本默认将仅含空白、无实际文本的单元格解析为null值而非空字符串,如果对应步骤方法的String入参未做null兼容处理,就会抛出参数类型不匹配的运行异常。 - 提供的复现代码本身存在格式疏漏:步骤定义行内的
<second>占位符漏写了左尖括号,写成"second>",会导致占位符无法被正确匹配,进一步放大解析异常的表现。
对应解决方法
- 显式标记空单元格:不要在Examples表格中留完全空白的单元格,将需要传入空字符串的位置替换为字面量
"",让解析器直接识别为目标空字符串值,参考修正后的Gherkin脚本:Scenario Outline: Testing datatable with empty string When passing "<first>" and "<second>" as String parameter Then exception should be thrown Examples: | first | second | | simple | "" | - 步骤层做兼容转换:在对应接收String参数的步骤方法中增加判空逻辑,将解析得到的
null值手动转换为空字符串"",匹配原有业务逻辑的预期。 - 恢复旧版本解析规则:在项目的
cucumber.properties配置文件中添加配置项cucumber.empty-cell-as-string=true,即可将空白单元格的解析行为切回旧版本的空字符串模式,无需修改原有业务测试脚本。
内容的提问来源于stack exchange,提问作者Janani Sampath Kumar
相关产品推荐
相关产品推荐

