This question already has answers here:
LinkedHashSet .equals() vs LinkedList .equals() with same elements but different order

(2个答案)



JUnit order of LinkedHashMap Java 8

(1个答案)


3年前关闭。




我正在尝试编写一个Junit测试,该测试应该测试两个LinkedHashSets中的元素顺序是否相同。以下是我现有的代码:
Assert.assertEquals(
            Sets.newLinkedHashSet(Arrays.asList("a","d","c","b")),
            conf.getSetInfo()
    );

即使我将a,d,c,b与a,b,c,d进行比较,并且因此不考虑元素的顺序,该测试也是成功的。
如何基于顺序进行断言?

最佳答案

当您比较两个列表是否相等时,将考虑元素的顺序。因此,只需将原始LinkedHashSet转换为List即可进行声明。

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

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

关于java - 对LinkedHashSet中的订单进行Junit测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45169421/

10-10 16:34