Тест 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()
реализация. Дальнейшее чтение.