Java 在AssertJ中比较前排序数组

Java 在AssertJ中比较前排序数组,java,assertj,Java,Assertj,我使用assertJ比较两个对象。我有我们的应用程序输出的实际对象和预期对象。此对象具有字段,该字段是其他对象的数组,但此数组中的元素以随机顺序出现,因此有时测试通过,但也经常失败,因为比较了数组中不正确的元素 我所做的是从两个对象获取数组,对它们进行排序,然后设置为对象,但这看起来很难看,并且使用了7行代码 Comparator.comparing(Value::getId) Value[] actualOrderChildren = actualOrder.getChildren(); A

我使用assertJ比较两个对象。我有我们的应用程序输出的实际对象和预期对象。此对象具有字段,该字段是其他对象的数组,但此数组中的元素以随机顺序出现,因此有时测试通过,但也经常失败,因为比较了数组中不正确的元素

我所做的是从两个对象获取数组,对它们进行排序,然后设置为对象,但这看起来很难看,并且使用了7行代码

Comparator.comparing(Value::getId)

Value[] actualOrderChildren = actualOrder.getChildren();
Arrays.sort(actualOrderChildren, comparing);
actualOrder.setChildren(actualOrderChildren);

Value[] expectedOrderChildren = expectedOrder.getChildren();
Arrays.sort(expectedOrderChildren, comparing);
expectedOrder.setChildren(expectedOrderChildren);

assertThat(actualOrder).isEqualToComparingFieldByFieldRecursively(expectedOrder);
使用assertj fluent断言是否有更好的解决方案?

可能就是您想要的

assertThat(actualOrder.getChildren()).containsExactlyInAnyOrder(expectedOrder.getChildren());
看看