我是Google Truth库的新手,我想知道是否有办法仅使用其中一个属性来比较两个元素。我知道用 AssertJ 可以做到这一点,所以我想知道 Truth 是否可以实现同样的目的。
我想做类似的事情。
list list1 = Method1TocreateAList((;
list list2 = Method2ToCreateAList((;
其他代码
我想实现
的测试 assertThat(list2(.compareElementsByUsing(x=>x.id = y(
要基于纯相等以外的比较来比较列表,请使用comparingElementsUsing
:
assertThat(list1).comparingElementsUsing(...).containsExactlyElementsIn(list2);
如果您也想检查订单,请在末尾添加inOrder()
调用。
唯一剩下的技巧是在该...
部分中放置什么。对于您的情况,由于您要比较单个字段的值,因此可以使用Correspondence.transforming
:
assertThat(list1)
.comparingElementsUsing(
transforming(X::id, "has an ID of"))
.containsExactlyElementsIn(list2);