java判断包含equals,java – 为什么.equals()在比较两个对象时会导致断言错误…但有时只会?...

我正在为代码学校的项目进行单元测试,而.equals()给了我一些麻烦.在我的项目中,.save()正在保存到SQL数据库中.此代码通过了单元测试:

@Test

public void save_assignsNameToObject() {

Restaurant testRestaurant = new Restaurant("PokPok","503-444-4444");

testRestaurant.save();

Restaurant savedRestaurant = Restaurant.all.get(0);

assertEquals(savedRestaurant.getName(), "PokPok");

}

但是如果我将最后一行更改为以下内容,则会导致断言错误:

assertTrue(savedRestaurant.equals(testRestaurant));

我使用System.out.println()调试,以验证testRestaurant中的两个值都执行“.equal”savedRestaurant中的相应值.以下单元测试(对于另一个非常相似的类的对象)使用.equals()方法传递:

@Test

public void save_assignsIdToObject_true() {

Cuisine testCuisine = new Cuisine("Mexican");

testCuisine.save();

Cuisine savedCuisine = Cuisine.all().get(0);

assertTrue(savedCuisine.equals(testCuisine));

}

编辑:这是.equals()的源代码:

@Override

public boolean equals(Object otherRestaurant) {

if (!(otherRestaurant instanceof Restaurant)) {

return false;

} else {

Restaurant newRestaurant = (Restaurant) otherRestaurant;

return this.getId() == new Restaurant.getId() &&

this.getName().equals(newRestaurant.getName()) &&

...

this.getPhone().equals(newRestaurant.getPhone());

}

}

为什么.equals()可以比较一些对象而不是其他对象?在我的代码示例中,我看到的唯一区别是一个对象采用一个参数,另一个采用两个参数.

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值