gpt4 book ai didi

java - 如何在 Assertj Collection of Set 中验证

转载 作者:行者123 更新时间:2023-11-28 21:18:58 25 4
gpt4 key购买 nike

我有返回记录列表的方法。每条记录都有设置为字段。

public class R {
public final Set s;
}

我有所有预期集合的列表 - 例如:

Set<String> set1 = new HashSet<String>(); set1.add("s1");
Set<String> set2 = new HashSet<String>(); set1.add("s2");
Set<String> set3 = new HashSet<String>(); set1.add("s3");

我想使用 AssertJ(版本 3.11.1)以简单的方式验证响应 List<R>包含所有已定义的集合或至少这些集合中所有元素的聚合等于集合中元素的聚合set1, set2, set3

注意:下面的解决方案有效:

Set allElements = new HashSet<String>();
allElements.addAll(set1);
allElements.addAll(set2);
allElements.addAll(set3);

List<R> result = foo();
org.assertj.core.api.Assertions.assertThat(result)
.extracting(record -> record.s)
.containsOnly(allElements);

我得到了:

java.lang.AssertionError: 
Expecting:
<[["s1.1", "s1.2"],
["s2.1", "s2.2"],
["s3.1", "s3.2"]]>
to contain only:
<[["s1.1",
"s1.2",
"s2.1",
"s2.2",
"s3.1",
"s3.2"]]>

最佳答案

看起来 containsExactlyInAnyOrderElementsOf 就是答案

解决办法是:

Set<Set<String>> referralSet = new HashSet<>();
referralSet.add(set1);
referralSet.add(set2);
referralSet.add(set3);

org.assertj.core.api.Assertions.assertThat(result)
.extracting(record -> record.s)
.containsExactlyInAnyOrderElementsOf(referralSet);

关于java - 如何在 Assertj Collection of Set 中验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54477600/

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