在我的测试中,我断言我返回的列表是我刚刚创建的列表按字母顺序排列的列表。
assertEquals 到底检查什么?它检查列表的顺序还是仅检查其内容?
因此,如果我有一个 { "Fred", "Bob", "Anna" } 列表,那么列表中的 2 个 { "Anna", "Bob", "Fred" } 会返回 true,因为它们包含相同的对象,无论顺序如何?
如果你遵循jUnit的源代码。你会看到assertEquals
最终调用equals
中提供的对象的方法isEquals
method.
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 https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Assert.java
这将调用.equals()
实施方法List
。这里是源代码 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/AbstractList.java#AbstractList.equals%28java.lang.Object%29为了.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());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)