1

我是 Google Truth 库的新手,我想知道是否有一种方法可以仅使用其中一个属性来比较两个元素。我知道 AssertJ 可以做到这一点,所以我想知道 Truth 是否可以做到这一点。

我想做类似的事情。

列表 list1 = Method1TocreateAList();
列表 list2 = Method2ToCreateAList();

//其他代码

//我要实现的测试
assertThat(list2).compareElementsByUsing(x=>x.id = y)

4

1 回答 1

1

要基于除普通相等之外的比较来比较列表,请使用comparingElementsUsing

assertThat(list1).comparingElementsUsing(...).containsExactlyElementsIn(list2);

inOrder()如果您也想检查订单,请在末尾添加呼叫。

剩下的唯一技巧是在该...部分中放置什么。对于您的情况,由于您想比较单个字段的值,您可以使用Correspondence.transforming

assertThat(list1)
    .comparingElementsUsing(
        transforming(X::id, "has an ID of"))
    .containsExactlyElementsIn(list2);
于 2018-09-20T14:39:15.070 回答