gpt4 book ai didi

java - 断言列表时 assertEquals 究竟检查什么?

转载 作者:搜寻专家 更新时间:2023-10-31 08:15:14 26 4
gpt4 key购买 nike

在我的测试中,我断言我返回的列表是我刚创建的列表的按字母顺序排列的列表。

assertEquals 究竟检查什么?它检查列表的顺序还是仅检查其内容?

因此,如果我有 { "Fred", "Bob", "Anna"} 的列表,将列出 { "Anna", "Bob", "Fred"} 中的 2 个返回 true,因为它们包含相同的对象,无论秩序?

最佳答案

如果您遵循 jUnit 的源代码。您将看到 assertEquals 最终对 isEquals 方法中提供的对象调用 equals 方法。

private static boolean isEquals(Object expected, Object actual) {
return expected.equals(actual);
}

源代码: https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Assert.java

这将在 List 的实现上调用 .equals() 方法。这是 source code对于“ArrayList”的 .equals() 实现。

ArrayList.equals()

  public boolean equals(Object o) {
if (o == this) //Equality check
return true;
if (!(o instanceof List)) //Type check
return false;
ListIterator<E> e1 = listIterator();
ListIterator e2 = ((List) o).listIterator();
while(e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : o1.equals(o2))) //equality check of list contents
return false;
}
return !(e1.hasNext() || e2.hasNext());
}

关于java - 断言列表时 assertEquals 究竟检查什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788275/

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