assertEquals(Object o1,Object o2)是否使用equals方法

Jer*_*ome 42 java junit

换句话说,assertEquals是否适用于覆盖的类 equals

Tim*_*nin 40

从您可以在Junit GitHub Repo上找到的assertEquals方法源代码:

/**
 * Asserts that two objects are equal. If they are not
 * an AssertionFailedError is thrown with the given message.
 */
static public void assertEquals(String message, Object expected, Object actual) {
    if (expected == null && actual == null) {
        return;
    }
    if (expected != null && expected.equals(actual)) {
        return;
    }
    failNotEquals(message, expected, actual);
}
Run Code Online (Sandbox Code Playgroud)

您可以看到Junit正在使用该.equals()方法.

编辑:

代码段来自Junit的弃用版本.

您可以在这里阅读"新"Junit的来源.这个想法几乎相同,.equals()也使用了该方法.

  • 我的问题是 JUnit 说相等的对象不相等。原来我没有正确覆盖`Object.equals`。:) 将 `@Override` 注释添加到您的方法中有助于确保您确实确实正确地进行了覆盖。 (2认同)

Juv*_*nis 7

assertEquals是否与覆盖等于的类一起使用?

是的,如果类有一个,则assertEquals()调用被覆盖equals()的.


Mar*_*nik 5

是的,它调用equals并且有一个单独的方法 ,assertSame它使用==. 只是为了澄清事情,assertEquals适用于任何对象,因为所有对象都声明了equals