Java assertEquals(对象o1,对象o2)是否使用equals方法
换句话说,assertEquals是否与重写Java assertEquals(对象o1,对象o2)是否使用equals方法,java,junit,Java,Junit,换句话说,assertEquals是否与重写等于的类一起工作 assertEquals是否与重写equals的类一起工作 是,assertEquals()调用重写的equals(),如果类有一个。是的 Object m = new Object() { @Override public boolean equals(Object obj) { System.out.println("proof!"); return super.equals(ob
等于的类一起工作
assertEquals是否与重写equals的类一起工作
是,assertEquals()
调用重写的equals()
,如果类有一个。是的
Object m = new Object() {
@Override
public boolean equals(Object obj) {
System.out.println("proof!");
return super.equals(obj);
}
};
Assert.assertEquals(m, m);
是的,它调用equals
,还有一个单独的方法,assertSame
,它使用=
。为了澄清问题,assertEquals
适用于任何对象,因为所有对象都声明等于
,您可以在上找到:
您可以看到Junit正在使用.equals()
方法
编辑:
代码段来自一个不推荐使用的Junit版本
您可以阅读“新”Junit的源代码。想法基本相同,也使用了.equals()
方法 JUnit是开源的,因此您可以自己在源代码中查找它:
如您所见,它使用等于。如果要比较标识,请使用assertSame
是-TestNG覆盖等于-
static public void assertEquals(Object actual, Object expected, String message) {
if((expected == null) && (actual == null)) {
return;
}
if(expected != null) {
if (expected.getClass().isArray()) {
assertArrayEquals(actual, expected, message);
return;
} else if (expected.equals(actual)) {
return;
}
}
failNotEquals(actual, expected, message);
}
我的问题是JUnit说相等的对象并不相等。结果证明我没有正确地覆盖对象.equals
。)将@Override
注释添加到方法中有助于确保您确实正确地进行了重写。谢谢,我也遇到了同样的问题,没有意识到参数必须是类对象。
static public void assertEquals(String message, Object expected,
Object actual) {
if (equalsRegardingNull(expected, actual)) {
return;
} else if (expected instanceof String && actual instanceof String) {
String cleanMessage = message == null ? "" : message;
throw new ComparisonFailure(cleanMessage, (String) expected,
(String) actual);
} else {
failNotEquals(message, expected, actual);
}
}
private static boolean equalsRegardingNull(Object expected, Object actual) {
if (expected == null) {
return actual == null;
}
return isEquals(expected, actual);
}
private static boolean isEquals(Object expected, Object actual) {
return expected.equals(actual);
}
static public void assertEquals(Object actual, Object expected, String message) {
if((expected == null) && (actual == null)) {
return;
}
if(expected != null) {
if (expected.getClass().isArray()) {
assertArrayEquals(actual, expected, message);
return;
} else if (expected.equals(actual)) {
return;
}
}
failNotEquals(actual, expected, message);
}