assertEquals (obj, obj) возвращает неудачный тест - PullRequest
0 голосов
/ 08 декабря 2011

Хм, у меня есть денежный объект, который позволяет мне добавлять в него другие денежные объекты.Я попытался assertEquals() в Java для проверки, если мой код, если все в порядке, но затем это не удалось.

Я очень уверен, что мой код правильный (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;
    }
}

Ответы [ 2 ]

8 голосов
/ 08 декабря 2011

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

1 голос
/ 08 декабря 2011

Вы можете написать свои тесты для сравнения полей:

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...