Does assertEquals(Object o1, Object o2) uses the equals method
In other words, does assertEquals works with a class that overrides equals
Solution 1:
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.
Solution 2:
does assertEquals works with a class that overrides equals?
Yes, assertEquals()
invokes the overridden equals()
if the class has one.