(P5) TestCW

naphta
Neuling
Neuling
Beiträge: 2
Registriert: 27. Mai 2007 07:36

(P5) TestCW

Beitrag von naphta »

Hallo,

mein Programm scheitert an TestCW mit folgender Fehlermeldung
Testsuite: TestCW
Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.047 sec

Testcase: test_Tree took 0.014 sec
FAILED
Invalid inorder.
junit.framework.AssertionFailedError: Invalid inorder.
at TestCW.compareInorder(Unknown Source)
at TestCW.test_Tree(Unknown Source)
Da es sonst alle Tests besteht und ich bei verschiedenen TestBäumen die richtige Sortierreihenfolge zurückbekomme nehme ich an, dass es an irgendeinem Formfehler liegt.
Bei einem leeren Baum gebe ich eine leere Liste aus und sonst fällt mir auch nicht ein, wo ähnliche Fehler entstehen könnten.

Hat jemand von euch vielleicht ein ähnliches Problem gelöst, eine Idee oder weiß ob bei TestCW etwas anderes als die Traversierung getestet wird?

Danke im Voraus

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

also bei mir war TestCW failed weil ich n bug im contains mit leeren bäumen hatte, irgendwas mit leeren bäumen wirds wohl sein. Teste einfach mal alles durch was irgendwo nen leeren baum hat oder so, sämtliche inorder, preorder, postorder, remove und get auf fehler, contains muss für alles false geben und add sollte eigentlich ja funktionieren. vielleicht hilft da was..

naphta
Neuling
Neuling
Beiträge: 2
Registriert: 27. Mai 2007 07:36

Beitrag von naphta »

Danke schön der Tip hat geholfen.

Ich hatte tatsächlich in meiner contains(key) leere Bäume nicht beachtet und damit auch beim Löschen in leeren Bäumen eine NullPointerException geworfen.

Also doch kein Formfehler...

ChrizZz
Erstie
Erstie
Beiträge: 12
Registriert: 28. Mai 2007 09:18

Beitrag von ChrizZz »

Wird da noch etwas anderes als leere Bäume überprüft? Ich bekomme folgende Fehlermeldung
Testsuite: TestCW
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.052 sec

Testcase: test_Tree took 0.016 sec
Caused an ERROR
null
java.lang.NullPointerException
at BinarySearchTree.remove(Unknown Source)
at TestCW.test_Tree(Unknown Source)
Ich überprüfe jetzt bei allen Methoden, die aufgerufen werden, falls sie mit null, also beispielsweise remove(null) oder auf einem leeren Baum aufgerufen werden.
Mich wundert auch die Reihenfolge der Fehlerbeschreibung null -> java.lang.Nullpointerexception ->... steht normalerweise, wenn eine NPE geworfen wird, nicht die NPE am Anfang?

Und was ist der Unterschied zwischen Failures und Errors?


Grüße
Christoph

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Beitrag von mantra »

ChrizZz hat geschrieben:Wird da noch etwas anderes als leere Bäume überprüft?
Wie kommst du denn überhaupt darauf, dass nur leere Bäume geprüft werden?
Und was ist der Unterschied zwischen Failures und Errors?
Failure: Erwartete falsche Rückgabe/gefangene falsche Exception.
Error: Unerwartete Exception (Methodenaufruf hätte korrekt terminieren sollen).

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

das null ist der eingegebene String zu dem Test, das wo sonst steht, was falsch war (your tree contains too much nodes oder sowas), ist halt kein string übergeben => null.

und zu dem fehler: Ich glaube schon dass da auf den leeren baum getestet wird, schau mal ob deine remove-funktion eine NodeNotInTreeException oder wie die hieß geworfen wird wenn der baum leer ist.. das wird vermutlich der test sein.

ChrizZz
Erstie
Erstie
Beiträge: 12
Registriert: 28. Mai 2007 09:18

Beitrag von ChrizZz »

Wenn ich einen leeren Baum erstelle und auf diesem Baum remove ausführe, wird bei mir die KeyNotInTreeException geworfen. Ich greif auch auf keinen Sohn zu der null ist, weil ich vor jedem Zugriff eine Abfrage habe, ob das Objekt == null ist.

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Beitrag von mantra »

MisterD123 hat geschrieben:Ich glaube schon dass da auf den leeren baum getestet wird, schau mal ob deine remove-funktion eine NodeNotInTreeException oder wie die hieß geworfen wird wenn der baum leer ist.. das wird vermutlich der test sein.
Ok, wenn du den TestCase kennst ...?
ChrizZz hat geschrieben:Wenn ich einen leeren Baum erstelle und auf diesem Baum remove ausführe, wird bei mir die KeyNotInTreeException geworfen
Sieht bei dir der leer erstellte Baum genauso aus, wie ein durch Löschen leer gewordener Baum?

ChrizZz
Erstie
Erstie
Beiträge: 12
Registriert: 28. Mai 2007 09:18

Beitrag von ChrizZz »

Danke, der letzte Post hat mir geholfen. Es wra tatsächlich so, dass die Söhne in bestimmten Fällen nach dem löschen anders als vorher waren.
Wenn das der Fehler war, dann würde es aber heißen, dass nicht unbedingt nur auf leeren Bäumen getestet wird.

Azadi
Windoof-User
Windoof-User
Beiträge: 30
Registriert: 28. Sep 2006 09:51

Beitrag von Azadi »

Also ich habe auch ein Problem mit diesem Test. Sonst läuft bei mir alles durch. Falls es was mit leeren Bäumen zu tun hat. Der Einzige Unterschied bei mir zwischen einen von Anfang an leer erstellten Baum und einen leeren Baum durch löschen aller Knoten ist, dass ein leerer Baum nach dem löschen "null' ist und sonst halt ein leerer Knoten also nicht null. kann es daran liegen?
meine Fehlermeldung ist:
Testsuite: TestCW
Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.046 sec

Testcase: test_Tree took 0.012 sec
FAILED
Invalid inorder.
junit.framework.AssertionFailedError: Invalid inorder.
at TestCW.compareInorder(Unknown Source)
at TestCW.test_Tree(Unknown Source)

Benutzeravatar
Antragon
Mausschubser
Mausschubser
Beiträge: 78
Registriert: 26. Okt 2005 13:09
Kontaktdaten:

Beitrag von Antragon »

Wozu machst du einen "leeren knoten"? ...es ist doch viel sipmpler statt dessen einfach direkt "null" beim neu-verknüpfen zu nehmen...

Azadi
Windoof-User
Windoof-User
Beiträge: 30
Registriert: 28. Sep 2006 09:51

Beitrag von Azadi »

jo, das hab ich nun geändert, naja dann auf ein neues um 18 uhr. sonst fällt mir echt nichts ein, hab alles mögliche getestet. thx

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

mantra hat geschrieben:
MisterD123 hat geschrieben:Ich glaube schon dass da auf den leeren baum getestet wird, schau mal ob deine remove-funktion eine NodeNotInTreeException oder wie die hieß geworfen wird wenn der baum leer ist.. das wird vermutlich der test sein.
Ok, wenn du den TestCase kennst ...?
vermutlich heißt so viel wie "ich vermute dass er so ist" ;) die genauen testcases kenn ich auch nicht..

Azadi
Windoof-User
Windoof-User
Beiträge: 30
Registriert: 28. Sep 2006 09:51

Beitrag von Azadi »

Hmmm dieser verdammte Test, ich kriege immer wieder diese fehlermeldung....
Testsuite: TestCW
Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.046 sec

Testcase: test_Tree took 0.012 sec
FAILED
Invalid inorder.
junit.framework.AssertionFailedError: Invalid inorder.
at TestCW.compareInorder(Unknown Source)
at TestCW.test_Tree(Unknown Source)
invalid inorder? ich kriege bei jedem test immer die richtige InOrder Traversierung. und bei einem leeren baum gebe ich einfach eine leere liste zurück...? sollte doch so sein oder habe ich da was falsch verstanden.. :|

Christoph B
Computerversteher
Computerversteher
Beiträge: 370
Registriert: 15. Okt 2006 18:28
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Christoph B »

wie hast du das mit dem leerem Baum getestet? einfach nen leeren Baum gemacht un dann inOrder?
oder Mal nen schönen Baum gebastelt, alle Knoten nacheinander gelöscht und DANN inOrder?

Löschst du Knoten brav nach Skript mit den 3 verschiedenen Fällen?

mal die hälfte aller Knoten aus nem Baum gelöscht un gecheckt ob die Orders stimmen?

Antworten

Zurück zu „Archiv“