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

AssertJ如何按列表元素的属性值比较两个列表是否相等?

是可以实现的,不过默认的AssertJ API不支持你示例中直接链式调用.lastName的写法,需要用专门的属性提取API调整写法,具体方案如下:

  • 如果你为User类定义了getLastName()公共getter方法,推荐用方法引用的方式提取属性,类型安全性更高:
// containsExactly 要求元素的顺序、数量、取值完全和预期一致,等价于集合equals判断
assertThat(userList)
  .extracting(User::getLastName)
  .containsExactly("A", "B", "C");
  • 如果你的User类没有定义getter,和示例一样是默认包访问权限的属性,可以直接传属性名,AssertJ会通过反射读取属性值:
assertThat(userList)
  .extracting("lastName")
  .containsExactly("A", "B", "C");

如果你想要完全贴近你示例里的链式调用写法,可以引入AssertJ的断言生成插件,为你的User类生成自定义断言类,配置完成后就可以用接近你预期的语法完成校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:39:01