2011-12-08 3 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! Это должно быть недостающее звено. T__T –

ответ

8

Вы не переопределить equals() метод из класса объектов в классе деньги. Если это так, объекты сравниваются по их ссылкам, которые в этом случае различны. Here вы можете найти правила для внедрения equals.

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()); 
Смежные вопросы