У меня есть метод, который возвращает список записей.Каждая запись имеет поле Set as.
public class R {
public final Set s;
}
У меня есть список всех ожидаемых Set - как:
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"]]>