gpt4 book ai didi

java - hamcrest:使用 hamcrest 逻辑比较两个集合 ob 自定义类

转载 作者:行者123 更新时间:2023-12-02 10:39:55 24 4
gpt4 key购买 nike

我有两个Collection<Dumb>我需要使用 hamcrest 进行比较:

public class Dumb {
private String id;

//setters & getters
}

简短而直接,

@Test
public void test() {
Collection<Dumb> actual = new ArrayList<Dumb>();
Dumb actualDumbOne = new Dumb();
actualDumbOne.setId("1");
Dumb actualDumbTwo = new Dumb();
actualDumbTwo.setId("2");
actual.add(actualDumbOne);
actual.add(actualDumbTwo);

Collection<Dumb> expected = new ArrayList<Dumb>();
Dumb expectedDumbOne = new Dumb();
expectedDumbOne.setId("1");
Dumb expectedDumbTwo = new Dumb();
expectedDumbTwo.setId("2");
expected.add(expectedDumbOne);
expected.add(expectedDumbTwo);

assertThat(expected, containsInAnyOrder(actual));
}

失败的原因是:

Expected: iterable over [<[Dumb@56114349, Dumb@46c28400]>] in any order
but: Not matched: <Dumb@2d6abfc7>

重要:我无法更改 Dumb代码,它是第三方类。重要:我需要比较 Dumb.id is equals to Dumb.id .

有什么想法吗?

最佳答案

如果您只需要比较 Dumb.id 成员,您可以将 ids 提取到列表中并比较生成的 id-list。

    List<String> actualIds = actual.stream().map(Dumb::getId).collect(Collectors.toList());
List<String> expectedIds = expected.stream().map(Dumb::getId).collect(Collectors.toList());

assertThat(expectedIds, containsInAnyOrder(actualIds.toArray()));

关于java - hamcrest:使用 hamcrest 逻辑比较两个集合 ob 自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com