首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >assertEquals(obj,obj)返回测试失败

assertEquals(obj,obj)返回测试失败
EN

Stack Overflow用户
提问于 2011-12-08 13:41:35
回答 2查看 2.7K关注 0票数 0

嗯,我有一个货币对象,它允许我向其中添加其他货币对象。我在java中尝试了assertEquals()来测试我的代码是否正常,但是失败了。

我非常肯定我的代码是正确的(System.out.println返回正确的答案),我想我只是以错误的方式使用了assertEquals。T_T

如果我想要找出是否使用myObj1 == myObj2进行测试,我到底应该使用什么?

代码语言:javascript
复制
**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;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-08 13:47:08

您没有在Money类中覆盖Object类中的equals()方法。如果是这样,则通过引用来比较对象,在这种情况下,引用是不同的。Here您可以找到实现equals的规则。

票数 8
EN

Stack Overflow用户

发布于 2011-12-08 13:56:12

您可以编写测试来比较字段:

代码语言:javascript
复制
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());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8426683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档