Junit测试LinkedHashSet中的顺序

时间:2017-07-18 14:18:00

标签: java collections junit set linkedhashset

我试图编写一个Junit测试,该测试应测试两个LinkedHashSets中元素的顺序是否相同。以下是我现有的代码:

Assert.assertEquals(
            Sets.newLinkedHashSet(Arrays.asList("a","d","c","b")),
            conf.getSetInfo()
    );  

即使我给它将a,d,c,b与a,b,c,d进行比较,这个测试也是成功的,因此不考虑元素的排序。 我怎样才能根据订单进行断言?

1 个答案:

答案 0 :(得分:6)

当您比较两个列表的相等性时,会考虑元素的排序。因此,只需将原始的LinkedHashSet转换为List以进行断言。

List<String> expected = Arrays.asList("a", "d", "c", "b");        
Assert.assertEquals(
   expected,
   new ArrayList<>(conf.getSetInfo())
);

LinkedHashSet是一个Set(尽管具有保证迭代顺序的Set),因此在其equals()实现中忽略了排序。 Further reading