2017-03-05 5 views
0

私は不変のバイナリ検索ツリーデータ構造を構築しようとしています。今私はこれまで開発してきたので、私が作成したメソッドをテストしようとしています。これまではうまくいっています。j-unit testing不変バイナリ検索ツリーの追加メソッド

マイaddメソッド、そのまま:

@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)); 
     } 
    } 
} 

私が問題を引き起こしていると思うのtoString:

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

とユニットテスト:しかし

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

、私の.add()メソッドがユニットテストに失敗したようです。私が推測したことから、私のEmptyクラスのtoStringメソッドは空白を返します。空白は、ユニットテストの結果(期待値:< 1>)の代わりに返されます(期待値:< 1>、実際は<>)。軽微な違いですが、テストが失敗するのに十分です。

junit test results and error report

私はtoStringメソッドを削除しようとしましたが、明らかに、これは単にデフォルトのtoStringを返し、APIを使用して検索するにはattemotedと、このような何も思い付きました。私は問題を正確に表現するために質問にフレーズするのに苦労しています。どんな助けでも大歓迎です。

+0

あなたはそれが配列 –

答えて

0

部分activeSet.add(1)Setを返します。しかし、この行の中で:

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

あなたはそれを数字1と比較しています。これはタイプにも互換性がないため一致しません。

おそらくaddの結果からtoStringを取得することを意味していましたか?

activeSet.add(1).toString() 

...それを別の文字列と比較しますか?

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

のようなコレクションクラスである場合、これは私が考えていたものであるデフォルトのTObject.toString +例えば、あなた自身のクラスの機能を使用してToString関数を実装する必要があります。しかし、私はこれを試みたときに同じエラー文が返されました:java.lang.AssertionError:要素が追加されていませんでした!期待通り:<1>でしたが、<1 > \t org.junit.Assert.fail(Assert.java:88) – p1520

+1

私はあなたが書いたものを読んでいます。チェックした値が ""を使って設定する必要があるとは考えていませんでした。それは治療を働く!大変ありがとう! – p1520

+1

JUnitの出力メッセージで読み込むのはちょっと難しいのですが、その場合は別のタイプであることがわかりません。 – john16384

関連する問題