言い換えると、assertEqualsはオーバーライドするクラスで機能しますかequals
7 に答える
Junit GitHubリポジトリにある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);
}
.equals()
Junitがメソッドを使用していることがわかります。
編集:
コードスニペットは、非推奨バージョンのJunitからのものです。
'new'Junitのソースについてはここで読むことができます。考え方はほとんど同じで、.equals()
方法も使用されます。
assertEqualsは、equalsをオーバーライドするクラスで機能しますか?
はい、クラスにオーバーライドがある場合assertEquals()
は、オーバーライドを呼び出します。equals()
はい、それは呼び出します、そして、を使用equals
する別のメソッド、があります。すべてのオブジェクトがを宣言しているので、物事を片付けるために、任意のオブジェクトで動作します。assertSame
==
assertEquals
equals
はい、そうです。
Object m = new Object() {
@Override
public boolean equals(Object obj) {
System.out.println("proof!");
return super.equals(obj);
}
};
Assert.assertEquals(m, m);
JUnit はオープンソースであるため、ソースで自分で調べることができます: 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);
}
ご覧のとおり、 を使用していますequals
。ID を比較する場合は、 を使用しますassertSame
。
はい - TestNG は equals をオーバーライドします -
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);
}