2017-11-23 29 views
0

なぜこれが失敗しているのか分かりませんが、以前のクラス/テストのペアで正常に動作しました。JUnitテストケースが失敗する - toString

テスト:

@Test 
public void testToString() { 
    OrderLine o = new OrderLine("Tuna 4 pack", 399 , 2); 
    String toStr = o.toString(); 

    assertTrue("The toString method should be in the standard convention format", 
      toStr.startsWith("OrderLine:[") && 
      toStr.contains("=" + o.getId() + ", ") && 
      toStr.contains("=" + o.getUnitPrice() + ", ") && 
      toStr.endsWith("=" + o.getQuantity() + "]")); 
} 

クラス関数:

public String toString() 
{ 
    return ("OrderLine:[ ID = " + id + 
      ", UnitPrice = " + unitPrice + 
      ", Quantity = " + quantity + 
      "]"); 

} 

謝罪これに対する答えは本当に明らかである場合には、そのいくつかの時間のために私格子とされて、私は正確に持たない仲間の学生私は今すぐに助けを求めることができます。

+1

'toStr.contains( "=" + o.getId()

これは読みやすさのためにそこに整流されたコードのオブジェクト指向を(私が知っている私のミスを)入れて+ ) 'vs' = "+ id + "、 ' - 文字列は空白で... –

+0

あなたはeclipseの実際の違いをポップアップ表示する' assertEquals() 'を使うかもしれません... –

+0

それは非常に明白です。あなたのtoString()メソッドは各キーとその値の間に "="を持つ各キーと値のペアを返しますが、テストでは各キーとその値の間に "="(スペースは含まない) –

答えて

0

ありがとうございました!

私が気にしているのは、平等な後のスペースは、まったく無関係であると読んだようです。私は唯一の ""

return ("OrderLine:[ID =" + id + 
     ", UnitPrice =" + unitPrice + 
     ", quantity =" + quantity + 
     "]"); 
+0

あなたは本当に=の前に1つの空白を入れたくありません。少なくともそれを対称にする。私はそれの周りにスペースを持つことをお勧めし、テストメソッドを代わりに変更します。 –

+0

@KlitosKyriacouはチップをありがとう! – Osprey

関連する問題