Тест Junit для заказа в LinkedHashSet

Я пытаюсь написать тест Junit, который должен проверить, одинаков ли порядок элементов в двух LinkedHashSets. Ниже приведен мой существующий код:

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

Этот тест успешен, даже если я дам ему сравнение a, d, c, b с a, b, c, d и, таким образом, не учитывая порядок элементов. Как я могу утверждать на основе заказа?

1 ответ

Решение

Когда вы сравниваете два списка на равенство, порядок элементов учитывается. Поэтому просто конвертируйте исходный LinkedHashSet в список для целей утверждения.

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

LinkedHashSet - это Set (хотя и с гарантированным порядком итераций), и, таким образом, порядок игнорируется в его equals() реализация. Дальнейшее чтение.

Другие вопросы по тегам