Java测试失败(tostring)

时间:2012-10-01 20:21:07

标签: java

我有这个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 + "]");
        }
}

6 个答案:

答案 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;
}

上面的代码假设所有字段都是不可为空的,并且JobTypeenum。 BTW toString()可能与此无关,只要您比较对象,而不是toString()对象(不良做法)。

答案 3 :(得分:1)

这可能是由于JobType.toString()方法返回一个额外的空格而发生的。

答案 4 :(得分:1)

我相信你在返回toString()方法的字符串中有一些额外的空格,从而使得返回的字符串与测试所期望的字符串(稍微)不同。

答案 5 :(得分:-1)

使用String aString b

您正在使用a == b代替a.equals(b)吗?