100% Branch-Coverage nicht möglich

hololol2
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 154
Registriert: 27. Apr 2015 14:13

100% Branch-Coverage nicht möglich

Beitrag von hololol2 »

Bei Aufgabe 1a sollen wir ja 100% Coverage erreichen.
Dies ist bei unserer Lösung aber nicht möglich, da einige Pfade bei "normaler" Benutzung nicht erreichbar sind.
Zum Beispiel wirft die Methode setLine(int edge), welche die übergegebene Kante setzt, eine Exception, wenn ein Fehler auftritt, z.B. edge < 0.
Diese Exception müssen über einen try-catch-Block abgefangen werden, um die Methode nutzen zu können.

Aber an dieser Stelle kann keine Exception auftreten, da die übergegebenen Kanten nicht von Eingabewerten abhängen, sondern schlicht die freien Kanten sind.
Der catch-Block kann also niemals erreicht werden.

Wie sollen wir vorgehen? Sollen wir das einfach als Hinweis in die Abgabe dazuschreiben?

Danke schonmal für die Antwort :D

leonidglanz
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 126
Registriert: 29. Apr 2015 08:35

Re: 100% Branch-Coverage nicht möglich

Beitrag von leonidglanz »

Hallo,

wenn Methoden Teile nicht testbar sind, dann ist mit dem Design etwas nicht in Ordnung oder Sie haben beim Testen Datenstrukturen nicht mit beachtet.

Wenn ihre Implementierung nicht oder nur schwer testbar ist, benutzen Sie bitte die Referenzlösung in Moodle.

MfG,
Leonid Glanz

BluBlu
Erstie
Erstie
Beiträge: 19
Registriert: 17. Sep 2015 09:50

Re: 100% Branch-Coverage nicht möglich

Beitrag von BluBlu »

Wir hatten das gleiche Problem. Zuerst habe ich mich ein bisschen über die Antwort gewundert, muss jetzt aber zugeben, dass in diesem Fall unser Design wirklich nicht optimal war.

Wenn der Methode setLine die Nummer einer ungültigen Kante übergeben wird, handelt es sich dabei um einen Fehler, der vom Aufrufer der Methode vermieden werden kann (z.B. indem er sie wie in der AI-Klasse aus einer Liste der Kanten auswählt). Also sollte die Methode setLine eine Unchecked Exception (also einen Erben der Klasse RuntimeException) werfen, welche vom Aufrufer der Methode nicht zwingend behandelt werden muss. Dass die Eingabe theoretisch auch vom Benutzer kommen und deshalb ungültig sein kann, ist meiner Meinung nach kein Grund für eine Checked Exception in einer Methode auf dieser Ebene.

a_schuck
Erstie
Erstie
Beiträge: 17
Registriert: 25. Apr 2013 11:07

Re: 100% Branch-Coverage nicht möglich

Beitrag von a_schuck »

Kleine Frage zur Aufgabenstellung. Passt hier gerade gut rein. Bezieht sich die 100% Coverage auf das gesamte Spiel oder nur die Funktionalität die für das berechnen des nächstes Zugs notwendig ist? (Bei der Referenzimplementierung also die Klasse AdvancedAI und alle aufrufenden Methoden)

leonidglanz
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 126
Registriert: 29. Apr 2015 08:35

Re: 100% Branch-Coverage nicht möglich

Beitrag von leonidglanz »

Hallo,

die 100% beziehen sich auf alle Methoden in der Klasse AdvancedAI der Referenzimplementierung.

MfG,
Leonid

Antworten

Zurück zu „Archiv“