Java 列表中所有元素的匹配器

Java 列表中所有元素的匹配器,java,junit,pattern-matching,Java,Junit,Pattern Matching,我想测试返回一组元素的java方法的结果,我需要检查结果是否包含所有元素,但不一定是以相同的顺序 我正在使用junitassertThat进行测试,但我不知道要使用哪个匹配器 基本上,我在寻找类似于JUnitMatchers.hasItem(T…elements)的东西,如果该方法返回的元素中至少有一个不在elements中,那么它就会失败。由于我的方法返回一个集合,如果elements包含两次相同的元素,匹配器就会失败 有人知道这样的匹配器吗?尝试对方法返回的集合进行排序。为此,您可能必须将其

我想测试返回一组元素的java方法的结果,我需要检查结果是否包含所有元素,但不一定是以相同的顺序

我正在使用junit
assertThat
进行测试,但我不知道要使用哪个匹配器

基本上,我在寻找类似于
JUnitMatchers.hasItem(T…elements)
的东西,如果该方法返回的元素中至少有一个不在elements中,那么它就会失败。由于我的方法返回一个集合,如果
elements
包含两次相同的元素,匹配器就会失败


有人知道这样的匹配器吗?

尝试对方法返回的集合进行排序。为此,您可能必须将其转换为
列表。然后使用标准
equals
检查它是否与已排序的预期集合相同。

您可以使用Hamcrest 1.2.1。它有一个匹配器,非常适合您的需要。

如果它是一个集合,它不能包含同一个元素两次…您可以只使用
Set.equals()
,尽管它可能不会提供与特定集合匹配器一样多的失败信息。对不起,我想我没有说清楚。我说的是提供给Matcher的元素,因为它通常是一个元素表,所以在技术上可以调用AssertThat(myMethod(),Matcher(e1,e2,e1)),但在这种情况下,即使方法返回一个集合{e1,e2},测试也必须失败。