1) Die Anzahl der bereitgestellten Schnittstellen ist nicht genau gleich.
assertEquals unterstützt boolesche, lange, int- und andere Java-PrimitiveType-Variablen.
assertSame unterstützt nur Object.
2) Die Vergleichslogik ist unterschiedlich und die Ergebnisse können unterschiedlich sein.
assertSame ist ein direkter Vergleich von Objekten. affirmEquals kann die vom verglichenen Objekt bereitgestellte Vergleichslogik verwenden, um Vergleiche durchzuführen.
Unter den gleichen Bedingungen sind die Laufergebnisse der beiden nicht unbedingt gleich.
Eine kurze Erklärung lautet wie folgt:
Die Vergleichslogik von „assertEquals(Object A, Object B):“
Wenn A und B beide Null sind, wird „true“ zurückgegeben. Andernfalls rufen Sie zur Bestimmung A.equals(B) auf.
Vergleichslogik von AssertSame(Object A, Object B):
Gemessen am Ergebnis der A == B-Operation.
Der Unterschied zwischen A.equals(B) und A==B ist.
Wenn A die Equals-Methode von java.lang.Object nicht überschreibt,
dann ist der Speicheradressenvergleich der beiden Java-Objekte derselbe wie das Ergebnis von A==B.
Wenn A die Methode equal überschreibt (z. B. GregorianCalendar, Klasse BigDecimal),
dann ist das Vergleichsergebnis nicht unbedingt dasselbe wie das Ergebnis von A==B.
Oben sind die unterschiedlichen Inhalte der Methoden „assertEquals“ und „assuredSame“ in JUnit aufgeführt. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).