我有这个Java程序,但是我的测试给了我这样的信息:
testEmployeeTostring:期望的testEmployeeTostring失败< [id [= 1013,name = Jubal Early,job =]采购]>但是:< [id [= 1013, name = Jubal Early,job =]采购]>
我不得不使用@Override
,我认为这就是问题所在。我希望有人能解决这个问题:
public class Employee {
int id;
String name;
JobType job;
public Employee(int id, String name, JobType job)
{
this.id = id;
this.name = name;
this.job = job;
}
@Override public String toString()
{
return ("["+ "id =" + id + ", name = " + name + ", job = " + job + "]");
}
}
答案 0 :(得分:8)
]和'采购'之间有空格
job =]采购
答案 1 :(得分:2)
使用断言语句在预期的String中有一个额外的空格。
答案 2 :(得分:1)
您确定已覆盖equals()
方法吗? JUnit使用equals()
来比较对象。覆盖hashCode()
总是一个好主意:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Employee)) return false;
Employee employee = (Employee) o;
return id == employee.id && job == employee.job && name.equals(employee.name);
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + name.hashCode();
result = 31 * result + job.hashCode();
return result;
}
上面的代码假设所有字段都是不可为空的,并且JobType
是enum
。 BTW toString()
可能与此无关,只要您比较对象,而不是toString()
对象(不良做法)。
答案 3 :(得分:1)
这可能是由于JobType.toString()方法返回一个额外的空格而发生的。
答案 4 :(得分:1)
我相信你在返回toString()方法的字符串中有一些额外的空格,从而使得返回的字符串与测试所期望的字符串(稍微)不同。
答案 5 :(得分:-1)
使用String a
和String b
,
您正在使用a == b
代替a.equals(b)
吗?