JUnit Testfall über private Methode im Dijkstra-Algorithmus

8

Ich versuche herauszufinden, wie man am besten einen Testfall für eine Klassenübung implementiert. Meine Klassenübung liefert den bekannten Fehler und damit sollte ich einen Testfall schreiben, damit dieser fehlschlägt und somit den Fehler findet. Es beinhaltete den Dijkstra-Algorithmus.

Dies ist die korrekte Version des bereitgestellten Codes:

%Vor%

Der bekannte Fehler in einer separaten Version ist wie folgt:

%Vor%

und hier ist der JUnit-Testfall, den ich verwende, um ihn zu finden. Ich versuche, mit Java Reflection auf diese Methode zuzugreifen und dann zu versuchen, festzustellen, ob der zurückgegebene Knoten gleich dem Knoten ist, der tatsächlich die größere Entfernung ist.

Hier ist mein Testfall:

%Vor%

Wenn ich den Test ausführe, scheint es nichts zu tun, da ich keine Ausgabe bekomme. Ich habe das Gefühl, dass ich dies überbewerte. Gibt es einen einfacheren Weg, diesen Bug ohne Java-Reflektion zu finden?

    
devindj6932 30.04.2015, 11:48
quelle

1 Antwort

1

Da Sie dies mit markiert haben, antworte ich in Form von Sachleistungen . Sie sollten private Testmethoden nicht testen, Sie sollten die öffentliche (oder geschützte) Methode testen, die die private Methode verwendet. Also:

%Vor%

(Puristen werden mich wahrscheinlich dafür schlagen, aber wenn ich an altem Code arbeite, ändere ich routinemäßig private Methoden in protected , um vor dem Refactoring eine einfache Einheitentestabdeckung zu ermöglichen, so dass die - unpraktische - Idee hiermit an dich weitergegeben wird ).

Prost,

    
Anders R. Bystrup 30.04.2015 12:52
quelle

Tags und Links