2011-12-08 4 views
0

ええと、私はそれに他のマネーオブジェクトを追加できるマネーオブジェクトを持っています。 私はassertEquals()をJavaで試してみましたが、私のコードが大丈夫ならばテストしましたが、失敗しました。assertEquals(obj、obj)は失敗したテストを返します

私のコードが正しいと確信しています(System.out.printlnは正しい答えを返します)。私はちょうどassertEqualsを間違った方法で使用していると思います。 T_T

myObj1 == myObj2がテストに使用されているかどうかを確認するにはどうすればよいですか?

**in my test.java**  
assertEquals(new Money(money1.getCurrency(),new Value(22,70)),money1.add(money2)); 

**in my money class** 
public class Money { 
    Currency currency; 
    Value value; 

    //constructor for Money class 
    public Money(Currency currency, Value value) { 
     super(); 
     this.currency = currency; 
     this.value = value; 
    } 

    public Currency getCurrency() { 
     return currency; 
    } 

    public void setCurrency(Currency currency) { 
     this.currency = currency; 
    } 

    //must have same currency 
    public Money add(Money moneyToBeAdded){ 
     Money result = new Money(moneyToBeAdded.currency, new Value(0,0)); 
     Value totalInCents; 
     int tempCents; 
     int tempDollars; 

     if(compareCurrency(moneyToBeAdded)){ 
      totalInCents = new Value(0,moneyToBeAdded.value.toCents()+value.toCents()); 
      tempDollars = (totalInCents.toDollars().getDollar()); 
      tempCents = (totalInCents.toDollars().getCents()); 

      result = new Money(moneyToBeAdded.currency, new Value(tempDollars,tempCents)); 
      System.out.println(result.value.getDollar()+"."+result.value.getCents()); 
     } 
     return result; 
    } 

    private boolean compareCurrency(Money money){ 
     return (money.currency.equals(currency))? true : false; 
    } 
} 
+0

どこクラスマネーの 'equals'方法はありますか? – Paul

+0

また、compareCurrencyでは、実質的に 'if(true)return true; else if(false)return false; '必要なものは以下の通りです:' return money.currency.equals(currency); ' – Paul

+0

woops!これは欠落しているリンクでなければなりません.. equals()によるT__T –

答えて

8

Moneyクラスのオブジェクトクラスからequals()メソッドをオーバーライドしていません。そうであれば、オブジェクトはその参照によって比較されます。 Hereequalsを実装するためのルールを見つけることができます。あなたがフィールドを比較するテストを書くことができ

1

Money m1 = new Money(money1.getCurrency(),new Value(22,70)); 
Money m2 = new Money(money1.getCurrency(),new Value(22,70)).add(money2); 

assertEquals("currencies differ", m1.getCurrency(), m2.getCurrency()); 
assertEquals("values differ", m1.getValue(), m2.getValue()); 
関連する問題