Search code examples
javajunit

Does assertEquals(Object o1, Object o2) uses the equals method


In other words, does assertEquals works with a class that overrides equals


Solution

  • From the source code of the assertEquals method that you can find on the Junit GitHub Repo:

    /**
     * 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);
    }
    

    You can see that Junit is using the .equals() method.

    Edit:

    The code snippet is coming from a deprecated version of Junit.

    You can read about the source of the 'new' Junit here. The idea is pretty much the same, the .equals() method is also used.