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

如何使用AssertJ断言嵌套List按指定规则排序?

用AssertJ断言嵌套List按指定规则有序

你需要针对外层List里的每一个内层List,单独验证它们是否按name升序排列——不用给isSortedAccordingTo传Comparator<List<ExampleDTO>>,那是用来比较外层List元素的。

直接用AssertJ的allSatisfy遍历外层List的每个内层List,再对每个内层List做排序断言即可:

import static org.assertj.core.api.Assertions.assertThat;

// 断言所有嵌套List按name升序排列
assertThat(actual).allSatisfy(innerList -> 
    assertThat(innerList).isSortedAccordingTo(Comparator.comparing(ExampleDTO::getName))
);

如果你的ExampleDTO已经实现了基于name的自然排序(实现Comparable<ExampleDTO>接口,重写compareTo方法按name比较),还能简化成:

assertThat(actual).allSatisfy(innerList -> assertThat(innerList).isSorted());

逻辑说明

  • allSatisfy会遍历外层List的每一个元素(也就是每个内层List<ExampleDTO>),对每个元素执行指定的断言逻辑。
  • 内层的isSortedAccordingTo(Comparator.comparing(ExampleDTO::getName))专门用来验证单个List是否按name升序排列,正好匹配你需要的嵌套List排序校验需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:45:55