2017-03-05 6 views
0

Ich habe versucht, eine unveränderliche binäre Suchbaum Datenstruktur zu erstellen. Jetzt, da ich in der Entwicklung so weit gekommen bin, versuche ich die Methoden zu testen, die ich erstellt habe. Bis jetzt läuft es gut.j-unit testen Unveränderlich binäre Suche Baum Methoden hinzufügen

Mein Add-Methode, wie es steht:

@Override 
public Set<T> add(T t) { 
    if (t.compareTo(x) == 0) { 
     return new Add<T>(x, left, right); 
    } else { 
     if (t.compareTo(x) < 0) { 
      return new Add<T>(x, left.add(t), right); 
     } else { 
      return new Add<T>(x, left, right.add(t)); 
     } 
    } 
} 

Die toString die ich denke, das Problem verursacht:

@Override 
public String toString(){ 
    return ""; 
} 

und die Unit-Test:

@Test 
public void SetAddElements(){ 
    activeSet = newSet.add(1); 
    assertEquals("The element(s) were not added!", 1 , activeSet.add(1)); 
} 

jedoch meine .add() -Methode scheint meinen Komponententest zu scheitern. Nach dem, was ich abgeleitet habe, gibt die toString-Methode meiner Empty-Klasse Leerraum zurück, was bedeutet, dass anstelle des Ergebnisses meines Unit-Tests (erwartet: < 1>): (< 1>, aktuell: < 1>) zurückgegeben wird. Ein kleiner Unterschied, aber genug für den Test fehlgeschlagen.

junit test results and error report

Ich habe versucht, die toString Methode zu entfernen, aber offensichtlich ist dies gibt nur das Standard-toString und attemoted mit api und so zu erforschen, aber kam mit nichts. Ich bemühe mich, die Frage in einer genauen Darstellung des Problems zu formulieren. Jede Hilfe würde sehr geschätzt werden.

+0

sollten Sie die toString Funktion mit dem Standard-TObject.toString + Ihre eigene Klasse Funktionalität zum Beispiel implementieren, wenn es sich um eine Sammlung Klasse wie Arrays ist –

Antwort

0

Der Teil activeSet.add(1) gibt Set zurück. Aber in dieser Zeile:

assertEquals("The element(s) were not added!", 1 , activeSet.add(1)); 

Sie vergleichen es mit der Nummer 1. Das ist keine Übereinstimmung, weil die Typen nicht einmal kompatibel sind.

Vielleicht wollten Sie toString aus dem add Ergebnis nehmen?

activeSet.add(1).toString() 

... und dann das mit einem anderen String vergleichen?

assertEquals("The element(s) were not added!", "1", activeSet.add(1).toString()); 
+1

Dies ist, was ich gedacht hatte. Als ich dies jedoch versuchte, gab der Test dieselbe Fehlermeldung zurück: java.lang.AssertionError: Die Elemente wurden nicht hinzugefügt! erwartet: <1> aber war: <1 > \t bei org.junit.Assert.fail (Assert.java:88) – p1520

+1

Ich vermisse, was Sie geschrieben hatten. Ich hatte nicht berücksichtigt, dass der Wert, gegen den ich gecheckt habe, mit "" gesetzt werden müsste. Es funktioniert ein Vergnügen! Vielen Dank! – p1520

+1

Ja, es ist nur ein bisschen schwer in JUnits Ausgabenachricht zu lesen, weil Sie in diesem Fall nicht sehen können, dass es sich um unterschiedliche Typen handelt. – john16384