当调用Person class by [name = "Mohammad ",age = 26]的实例时,我想返回4。当调用Person class by [name = "Ali ",age = 20]的实例时,我想返回5。
所以我有这些课程:
public class Person {
private String name;
private int age;
我的刀类:
public class DAO {
public int getA(Person person) {
return 1;
}
public int getB(Person person) {
return 2;
}
}
这是计算器类
public class Calculator {
private DAO dao;
public int add() {
dao = new DAO();
return dao.getA(new Person("Mohammad", 26)) +
dao.getB(new Person("Ali", 20));
}
}
这是我的测试:
@Test
public void testAdd() throws Exception {
when(mydao.getA(new Person("Mohammad", 26))).thenReturn(4);
when(mydao.getB(new Person("Ali", 20))).thenReturn(5);
whenNew(DAO.class).withNoArguments().thenReturn(mydao);
assertEquals(9, cal.add());
}
那么为什么我的测试会失败呢?
我不太确定您使用的是哪种测试框架,但when()调用中使用的Person实例与Calculator类中使用的实例不同,因此除非您在Person中重写equals()和hashcode(),否则它们不会被视为匹配。
您的IDE应该能够生成合适的默认equals()和hashcode()方法。
您的测试类中的Calculator
类和new Person(“Mohammad”,26)
new Person不相等,因为您没有覆盖
类中的方法。
覆盖< code>Person类中的equals方法,如下所示
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
if (age != person.age) return false;
if (name != null ? !name.equals(person.name) : person.name != null) return false;
return true;
}
当覆盖< code>equals()方法时,覆盖< code>hashCode是必要的
假设我有一段代码,可以创建一个具有给定名称的苹果实例 这条线可以被许多玩家调用,每个玩家都有一个Apple类的实例,在这个实例中,名称有点像ID 现在假设在Apple类中有一个ArrayList,它存储每个玩家的朋友 还有一个getter/setter用于更新和检索朋友,所以如果一个特定的玩家键入一个命令 /addfriend将一个朋友添加到他的特定实例数组列表中,我将如何做到这一点? 示例,更新
假设我让玩家创建团队并创建团队调用团队类的新实例,该实例具有称为成员的数组列表。 现在在主课堂上,我如何在被邀请后将球员添加到团队中?我在team类中有一个addPlayer方法,只需将它们添加到arraylist中,但是如果teams类当前有多个实例(其他玩家创建了团队),它怎么知道要加入哪一个呢? 我在teamLeader的Teams类中有一个变量,在创建实例时设置该变量,如果这可以帮助我编辑
我工作在一个电子邮件偏好中心和用户有4个选项-3个选项是电子邮件频率和最后一个选项是退订。我有两个不同的字段,我的表单正在传递-电子邮件频率和电子邮件状态。我的电子邮件状态字段有问题。 对于单选按钮1-3,我希望它张贴电子邮件状态=“我”,而且电子邮件频率是“所有”,“每周”或“每月” 对于最后一个单选按钮,我只希望它发布电子邮件状态=“O” 我似乎不能使这两个工作-它要么只通过我,然后不明嫌犯单
我们如何在数组中创建object的特定字段? 下面是函数内部的代码(问题) 谢谢!!
假设有一个类: ...您有一个实例列表,即
我有一个有4个参数的类。还有一个测试,将空对象放入。有可能捕捉到这个空值吗?我的意思是,有些测试将IlligalArgumentException放在了一起。所以,如果我尝试用try-catch块捕捉这个空对象,对于整个costructor块,这个可以工作,但其他测试会崩溃,反之亦然。