FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P2 Aufgabenblatt X

P2 Aufgabenblatt X 2003-06-02 14:14
Anonymer User
Ich hab mich mal an das Aufgabenblatt X herangewagt und gleich ein Problem =)
Aufgabe X.5.1 lautet:
Schreibt für den existierenden Test Film_Test die notwendige Klasse Film, indem Ihr zuerst die fehlenden Methoden identifiziert und leer implementiert. Ruft den Test auf und sorgt schrittweise dafür, dass er erfolgreich verläuft.

Die Klasse Film hab ich fertig geschrieben und alle Tests bis auf assertEquals(f2, f1); funktionieren.

Der eine Teil der Klasse Film_Test sieht folgendermassen aus:
/**
* Testet equals()-Operation
*/
public void testeEquals() {

Film f1 = new Film("Titel", 90, 16, true);

Film f2 = new Film("Titel", 90, 16, true);
assertEquals(f2, f1);
[…]
}

Wenn ich jetzt den Test durchlaufe kommt folgende Fehlermeldung:
junit.framework.AssertionFailedError: expected:<de.unihamburg.informatik.p2.kinokartenverkauf.Film@c21495> but was:<de.unihamburg.informatik.p2.kinokartenverkauf.Film@1d5550d>

Können die beiden Exemplare überhaupt "equal" sein? Sie haben zwar die gleichen Inhalte, aber sind ja nicht identisch!?

Re: P2 Aufgabenblatt X 2003-06-02 14:20
Zaphod
Wie sieht denn deine equals()-Funktion in der Klasse Film aus? Wenn die zwei Filme auf gleichen Inhalt überprüft, nicht aber auf Identität des Objekts, dann müsste das doch klappen, oder?

Re: P2 Aufgabenblatt X 2003-06-02 14:23
Ksireau
Wie sieht denn deine equals()-Funktion in der Klasse Film aus? Wenn die zwei Filme auf gleichen Inhalt überprüft, nicht aber auf Identität des Objekts, dann müsste das doch klappen, oder?

Muss man da eine machen? Also ich hab da keine eingebaut. Die anderen Tests laufen auch ohne eine equals()-Funktion.


Re: P2 Aufgabenblatt X 2003-06-02 14:26
UncleOwen
Ohne jetzt die Aufgabe gesehen zu haben: Alleine der Name "assertEquals()" klingt schon SEHR danach, dass da die Funktionalität von equals() getestet wird. Und da es ziemlich langweilig wäre, das Original-equals() zu testen, wird damit wohl eine überschriebene Variante gemeint sein.

Re: P2 Aufgabenblatt X 2003-06-02 14:28
Ksireau
Alles klar. Hab jetzt ne equal()-Funktion geschrieben, die auf Gleichheit von Titel, Spieldauer, FSK und Überlänge checkt und es funktioniert! *freu* Ich danke euch!

Re: P2 Aufgabenblatt X 2003-06-02 18:05
leif
Ich hab mich mal an das Aufgabenblatt X herangewagt und gleich ein Problem =)
Aufgabe X.5.1 lautet:

Du bist schon bei Aufgabe 5? Du hast aber gesehen, daß die Aufgaben für zwei Wochen sind (durch Pfingsten quasi sogar für drei)? D.h. es wird nicht erwartet, daß diese Woche schon alles abgenommen werden kann.

Im Gegenteil, die Aufgaben sollen ja eigentlich (hauptsächlich) in den Gruppen gemacht werden und da ist der gesamte Zettel nicht in drei Stunden machbar.

Zur Frage: Wenn ein Test erfordert, daß zwei Filme, die zwar nicht identisch sind, aber den gleichen Zustand haben, als "gleich" zu gelten haben, dann muß man dies eben implementieren. Aber das hast Du ja scheinbar jetzt auch gemacht.


Re: P2 Aufgabenblatt X 2003-06-02 19:44
Dosenwein
Exakt das selbe Problem hatte ich auch.

Aber auf dem Übungszettel stand aber nichts von wegen implementiere ein equals() falls die Vorlage nicht funzt…

Ich denke die haben da einfach einen Fehler in ihrem Projekt übersehen.
Toll. Hat mich jedenfalls lange grübbeln lassen, bis ich die Fehlerstelle endlich lokalisiert hatte.

Hab diesen Punkt erstmal auskommentiert…

Dosenwein

Re: P2 Aufgabenblatt X 2003-06-03 09:33
UncleOwen
"indem Ihr zuerst die fehlenden Methoden identifiziert"

Also ich find schon, dass das da steht. Ein fehlen einer Methode kann noch andere Auswirkungen als einen Kompilerfehler haben - z.B. fehlschlagende Tests.