gpt4 book ai didi

java - 使用 Hamcrest 映射相等

转载 作者:IT老高 更新时间:2023-10-28 20:33:23 35 4
gpt4 key购买 nike

我想使用 hamcrest 来断言两个映射是相等的,即它们具有指向相同值的相同键集。

我目前的最佳猜测是:

assertThat( affA.entrySet(), hasItems( affB.entrySet() );

给出:

The method assertThat(T, Matcher<T>) in the type Assert is not applicable for the arguments (Set<Map.Entry<Householdtypes,Double>>, Matcher<Iterable<Set<Map.Entry<Householdtypes,Double>>>>)

我还研究了 containsAll 的变体,以及 hamcrest 软件包提供的其他一些内容。谁能指出我正确的方向?还是我必须编写一个自定义匹配器?

最佳答案

我想出的最短方法是两种说法:

assertThat( affA.entrySet(), everyItem(isIn(affB.entrySet())));
assertThat( affB.entrySet(), everyItem(isIn(affA.entrySet())));

但你也可以这样做:

assertThat(affA.entrySet(), equalTo(affB.entrySet()));

取决于 map 的实现,并牺牲差异报告的清晰度:这只会告诉您存在差异,而上面的陈述也会告诉您是哪一个。

更新:实际上有一个语句独立于集合类型:

assertThat(affA.entrySet(), both(everyItem(isIn(affB.entrySet()))).and(containsInAnyOrder(affB.entrySet())));

关于java - 使用 Hamcrest 映射相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2509293/

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