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

lil*_*oka 5 java junit mockito

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

assertEquals究竟检查了什么?它检查列表的顺序或仅检查其内容吗?

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

Kev*_*sox 13

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

private static boolean isEquals(Object expected, Object actual) {
    return expected.equals(actual);
}
Run Code Online (Sandbox Code Playgroud)

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

这将调用该.equals()方法的实现List.下面是源代码.equals()'ArrayList的"的实施.

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());
  }
Run Code Online (Sandbox Code Playgroud)