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

如何在Cucumber步骤中正确使用Builder模式构建请求对象

结论

你的实现方案完全合理,没有过度使用Builder模式,两种构造方式刚好匹配不同的使用场景。

合理性说明

  • 主请求类Search用Lombok Builder非常适配:Builder模式的核心优势就是构建字段多、有必填约束、生成后不可变的对象,你构建Search请求时可以明确传入所有必填参数,build后生成的对象不可变,作为请求参数发送时不会出现后续步骤误改的问题,符合接口测试的参数确定性要求。
  • 嵌套配置类Preferences用链式setter更适配Cucumber的分步测试场景:Lombok原生Builder是一次性构建模式,无法跨多个步骤分批赋值,你如果硬用Builder反而需要额外暂存Builder实例,增加冗余代码。链式setter刚好支持你按需在不同步骤给Preferences新增配置,完美匹配你部分场景才设置foo字段的测试需求。

可优化点建议

  1. 你的Search类同时加了@Data和@Getter属于冗余注解,@Data已经内置了@Getter、@Setter、@ToString等功能,可以直接删掉多余的@Getter。
  2. 如果后续需要给Preferences增加必填字段校验,也可以两种模式结合:给Preferences加@Builder注解,在步骤类中暂存Preferences.PreferencesBuilder实例,跨步骤调用builder的赋值方法,最后在构建Search对象前再执行preferencesBuilder.build()即可,两种写法没有优劣,完全看你的校验需求。
  3. 如果你后续要拆分步骤类共享配置,建议把Preferences实例放到统一的TestContext中管理,避免不同步骤类之间的参数传递问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:06