2010-11-24 8 views
-3

2つのオブジェクトが等しいかどうかを確認するために、まだfalseを返します。誰かがなぜこれが起こっているのかを私に説明できますか?ありがとう。Equals(Obj)Testing

public boolean equals(Object obj) { 
    if(obj instanceof SparsePolynomial) 
    { 
    return true; 
    } 
    return false; 
} 

@Test 
public void testEqualsObj() 
{ 
    ArrayList<Integer> k = new ArrayList<Integer>(); 
    k.add(1); 
    k.add(3); 
    SparsePolynomial d = new SparsePolynomial(k); 
    ArrayList<Integer> k2 = new ArrayList<Integer>(); 
    k.add(1); 
    k.add(3); 
    SparsePolynomial d2 = new SparsePolynomial(k2); 
    Assert.assertTrue(d.equals(d2)); 
} 
+0

コードは、それがここで完全に正常に動作します – hhafez

+3

私には正常に見えます。私たちにすべてを見せてくれるのですか? – Bozho

+0

が間違っています。私はそれを更新しました。 – Meat

答えて

0

存在を確認してくださいするのに十分な情報があるが、私はどちらかと疑う代わりAssert.assertTrue(d.equals(d2));

+0

機能上の違いはありません。 –

+0

'assertEquals'を使用しても、テストが失敗してはいけません。 'equals'を使って2つの' Boolean'オブジェクトを比較します。その醜いが、それは動作するはずです。 –

+0

が間違っていた。私はそれを更新しました。 – Meat

1

をお試しください:

  • equalsSparsePolynomialの方法として定義されていません。おそらくあなたはスーパークラス...または無関係なクラスでそれを定義しています。
  • コードを変更した後で、関連するすべてのクラスを再コンパイルしていません。

EDIT

  1. スーパークラスまたはインタフェースで定義されたメソッドを上書きするequals方法を意図しフラグに@Overrideアノテーションを使用(または実装)することをお勧めします。 (ここでは何の違いもありませんが、メソッドシグネチャで間違いがあった場合はそれがわかります)
  2. テストに使用されるAssertメソッドを変更しても結果には違いはありません。
  3. 表示したequalsの方法は明らかに偽です。 objパラメータのタイプをテストし、その状態を無視するだけです。書かれているように、SparsePolynomialインスタンスを別のインスタンスに対してテストするたびに、trueを返す必要があります。
+0

が間違っています。私はそれを更新しました。 – Meat

+0

ありがとうございました – Meat

0

私はあなたのコードを試して、テストに合格しました。

あなたは、私がここで使用してきた正確なテストケースを見つけることができます。

public class SparsePolynomialTest { 
    public static class SparsePolynomial { 
     private List<Integer> list; 

     public SparsePolynomial(List<Integer> list) { 
      this.list = list; 
     } 

     public boolean equals(Object obj) { 
      if (obj instanceof SparsePolynomial) { 
       return true; 
      } 
      return false; 
     } 
    } 

    @Test 
    public void testEqualsSparse() { 
     ArrayList<Integer> k = new ArrayList<Integer>(); 
     k.add(1); 
     k.add(3); 
     SparsePolynomial d = new SparsePolynomial(k); 
     ArrayList<Integer> k2 = new ArrayList<Integer>(); 
     k2.add(1); 
     k2.add(3); 
     SparsePolynomial d2 = new SparsePolynomial(k2); 
     Assert.assertEquals(true, d.equals(d2)); 
    } 
} 
+0

私はそれほど考えませんでした。問題はいくつかの重要な詳細を省いています。 –

+0

ちょっと不思議なことに、いくつかのコードを書いて投稿するという取り組みに行くなら、なぜあなたの答えに投稿するだけではないのですか?来月、このペーストビンはなくなり、あなたの答えはずっと役に立たないか役に立たなくなるでしょう。 –

+0

@ Monkey:このコードは新しいものをもたらさず、ここで質問ページを汚染すると思った。したがって、私は外部リソースを使用しました。ところで、私は "keep forever"またはそれがpastebin.comで呼び出されたものをチェックしました。 –