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

后端 未结 6 1751
孤街浪徒
孤街浪徒 2020-12-05 04:15

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

6条回答
  •  [愿得一人]
    2020-12-05 04:45

    JUnit is opensource, so you could have looked it up yourself in the source: https://github.com/junit-team/junit4/blob/master/src/main/java/org/junit/Assert.java

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

    So as you can see it uses equals. If you want to compare identity, you use assertSame.

提交回复
热议问题