我试图编写一个Junit测试,该测试应测试两个LinkedHashSets中元素的顺序是否相同。以下是我现有的代码:
Assert.assertEquals(
Sets.newLinkedHashSet(Arrays.asList("a","d","c","b")),
conf.getSetInfo()
);
即使我给它将a,d,c,b与a,b,c,d进行比较,这个测试也是成功的,因此不考虑元素的排序。 我怎样才能根据订单进行断言?
答案 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。