Junit 测试 LinkedHashSet 中的顺序
Junit test for order in LinkedHashSet
我正在尝试编写一个 Junit 测试,它应该测试两个 LinkedHashSet 中元素的顺序是否相同。以下是我现有的代码:
Assert.assertEquals(
Sets.newLinkedHashSet(Arrays.asList("a","d","c","b")),
conf.getSetInfo()
);
即使我将 a、d、c、b 与 a、b、c、d 进行比较,因此不考虑元素的顺序,此测试也是成功的。
我怎样才能根据顺序进行断言?
比较两个 List 是否相等时,会考虑元素的顺序。因此,只需将原始 LinkedHashSet 转换为 List 即可用于断言。
List<String> expected = Arrays.asList("a", "d", "c", "b");
Assert.assertEquals(
expected,
new ArrayList<>(conf.getSetInfo())
);
LinkedHashSet 是一个 Set(尽管它具有保证的迭代顺序),因此在其 equals()
实现中忽略了顺序。 Further reading。
我正在尝试编写一个 Junit 测试,它应该测试两个 LinkedHashSet 中元素的顺序是否相同。以下是我现有的代码:
Assert.assertEquals(
Sets.newLinkedHashSet(Arrays.asList("a","d","c","b")),
conf.getSetInfo()
);
即使我将 a、d、c、b 与 a、b、c、d 进行比较,因此不考虑元素的顺序,此测试也是成功的。 我怎样才能根据顺序进行断言?
比较两个 List 是否相等时,会考虑元素的顺序。因此,只需将原始 LinkedHashSet 转换为 List 即可用于断言。
List<String> expected = Arrays.asList("a", "d", "c", "b");
Assert.assertEquals(
expected,
new ArrayList<>(conf.getSetInfo())
);
LinkedHashSet 是一个 Set(尽管它具有保证的迭代顺序),因此在其 equals()
实现中忽略了顺序。 Further reading。