gpt4 book ai didi

java - AssertEquals 2 列表忽略顺序

转载 作者:IT老高 更新时间:2023-10-28 13:53:08 28 4
gpt4 key购买 nike

我相信这应该是一个非常简单的问题。但不知何故,我无法在 Google 中找到答案。

假设我有 2 个字符串列表。第一个包含 "String A"和 "String B",第二个包含 "String B"和 "String A"(注意顺序不同)。我想用 JUnit 对它们进行测试,以检查它们是否包含 完全相同的字符串。

是否有任何断言检查忽略顺序的字符串的相等性?对于给定的示例 org.junit.Assert.assertEquals 抛出 AssertionError

java.lang.AssertionError: expected:<[String A, String B]> but was:<[String B, String A]>

解决方法是首先对列表进行排序,然后将它们传递给断言。但我希望我的代码尽可能简单干净。

我使用 Hamcrest 1.3JUnit 4.11Mockito 1.9.5

最佳答案

正如您提到的,您使用 Hamcrest ,
所以我会选择一个集合匹配器

import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
import static org.junit.Assert.assertThat;

public class CompareListTest {

@Test
public void compareList() {
List<String> expected = Arrays.asList("String A", "String B");
List<String> actual = Arrays.asList("String B", "String A");

assertThat("List equality without order",
actual, containsInAnyOrder(expected.toArray()));
}

}

关于java - AssertEquals 2 列表忽略顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22807328/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com