2016-04-16 13 views
0

Ich bin neu in Junit & testen. Ich habe zwei Arrays, die aus Objekten der Klassenart MyUniqueClass bestehen. Ich betrachte die beiden Arrays als gleich, wenn sie dieselben Elemente an den gleichen Positionen haben. Außerdem habe ich die Methode equals() für meine eindeutige Klasse überschrieben.Junit-Check für die Gleichheit der Anordnung der einzigartigen Klasse

Ich möchte auf Gleichheit dieser beiden Arrays in Junit überprüfen. Ich konnte keine Methode in der API finden - http://junit.sourceforge.net/javadoc/org/junit/Assert.html Wie überprüfe ich die Gleichheit in Junit?

EDIT:

Wenn ich meinen JUnit-Test ausführen, um die Felder zu vergleichen, erhalte ich die Fehlermeldung:

arrays first differed at element [0]; expected: com.test.IntegerRange<[210, 210]> but was: com.test.IntegerRange<[210, 210]> 
    at org.junit.internal.ComparisonCriteria.arrayEquals(ComparisonCriteria.java:50) 
    at org.junit.Assert.internalArrayEquals(Assert.java:473) 

Dank!

+1

Die Nachricht sagt Ihnen genau, was Sie wissen müssen: Die Arrays sind unterschiedlich. Bedeutung: wenn Sie arrayOne [0] .equals (arrayTwo [0]) aufrufen; Das Ergebnis ist falsch. Lange Rede, kurzer Sinn: Sie denken, dass diese beiden Elemente identisch sind, und Sie nehmen an, dass Ihre equals() Implementierung korrekt ist. Aber gut, wenn das der Fall wäre, würden Sie nicht auf diese Fehlermeldung stoßen. Der Kern, den es zu verstehen gilt, ist: Sie sollten dem Compiler Glauben schenken und Botschaften ** mehr ** bestätigen, als Sie an Ihre Annahmen glauben. – GhostCat

Antwort

0

Sie könnten ein wenig genauer hinsehen. Auf der Seite, mit der Sie verbunden sind, habe ich Folgendes gefunden:

public static void assertArrayEquals(java.lang.String message, 
           java.lang.Object[] expecteds, 
           java.lang.Object[] actuals) 
          throws org.junit.internal.ArrayComparisonFailure 
+0

Hank, das geht nicht. Bitte sehen Sie meinen bearbeiteten Kommentar. – HelloWorldNoMore

+0

@HelloWorldNoMore, es sieht so aus, als ob Sie Ihre IntegerRange.equals() Methode checken mssen. Wenn Sie es nicht überschreiben, werden die Felder von IntegerRange nicht verglichen - es wird nur true zurückgegeben, wenn sie dieselbe Instanz sind. –

+0

Können Sie den IntegerRange-Code teilen, auf den Sie sich beziehen? –

Verwandte Themen