JUnit/Hashcode Problem

Aeglasin

Mitglied
Hallolo,
mir ist gerade während ich die letzten Buggs, eines meiner aktuellen Hochschulprojekt, rauskillte ein komischer Fehler untergekommen, kann hier jemand damit was anfangen bzw mir sagen was das Problem ist?:
Ein JUnit test welcher überprüft ob 2 Objekte einer Klasse Sitzungsticket "Durch Serialisierung clonebar sind" lieferte mir in einer Zeile in der
Java:
 assertEquals(ticket1, ticket2);
steht folgenden JUnitfehler:
junit.framework.AssertionFailedError: expected:<nutzerundTickets.Ticketimpl@786bc1e7> but was:<nutzerundTickets.Ticketimpl@786bc1e7>
was ich nicht verstehe: Wo ist das Problem??? der wert bei "expected" ist doch der gleiche wie bei "but was" oder hab ich nen knick in der Optik?
Ich habe den verdacht das es irgendwas mit der hashCode Methode meiner Tickets zutun hat, da ich diese Methode umschreiben musste da die normale von hashCode Methode unterschiedliche Hashwerte für 2 semantisch identische Tickets geliefert hat, da aber meine Tickets einen identifizierenden String mit Namen Ticketschlüssel haben, habe ich einfach den Hashcode von diesem Ticketschlüssel über die hashCode-Methode meiner Ticketklasse ausliefern lassen.
Oder liegt hier der Hase begraben? ???:L


Gruß
Aeglasin
 
Zuletzt bearbeitet:
die Fehlermeldung hat es nicht ganz einfach,
Valerio Schiavoni's jBlog : Weblog

wobei man vielleicht deutlich 'diese beiden Objekte sind nicht equal .. ' schreiben könnte,
in den eckigen Klammern steht jedenfalls anscheinend einfach das toString() der beiden Objekte, welche von Natur aus auch den Hashcode beinhalten

HashCode hast du implementiert so dass das gleiche kommt, equals aber anscheinend nicht,
genau das soll der Test ja auch zeigen, Test hat erfoglreich den Fehler aufgedeckt
 
Hmm zum einen gibts einige Junittests die auch auf die Equalsmethode zurückgreifen, welche auch alle ohne Probleme klappen, zum anderen weis ich net was ich an meiner equals Methode groß falsch gemacht ham könnte
hier mal der Code von selbiger
Java:
public boolean equals(Ticketimpl tocheck) {
		// TODO Auto-generated method stub
		return tocheck.getPK().equals(ticketschlüssel);
	}
getPK liefert den ticketschlüssel von tocheck.
während hashCode wie folgt aussieht:
Java:
@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return ticketschlüssel.hashCode();
	}
 
Deine equals Methodensignatur ist falsch und hat deswegen nichts mit der echten equals Methode zu tun.
 
Arg heute hab ich wohl wieder mal nen Hängertag, das Problem war das ich einfach die @Overrite rausgekillt hab und meiner equalsMethode stat nem Standard-Object direkt das TicketObjekt geben hab. sorry für den Failpost
 

Neue Themen


Zurück
Oben