2

我有这个 Java 程序,但我的测试给了我这个消息:

testEmployeeTostring: testEmployeeTostring 预期失败 <[id[= 1013, name= Jubal Early, job = ]procurement]> 但是:<[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 + "]");
        }
}
4

6 回答 6

8

] 和“采购”之间有一个空格

工作 = ] 采购

于 2012-10-01T20:23:57.437 回答
2

带有断言语句的预期字符串中有一个额外的空间。

于 2012-10-01T20:24:26.670 回答
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. toString()只要您比较对象而不是toString()对象(不好的做法),顺便说一句,这里可能无关紧要。

于 2012-10-01T20:25:45.210 回答
1

这可能是由于 JobType.toString() 方法返回了一个额外的空间。

于 2012-10-01T20:26:24.907 回答
1

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

于 2012-10-01T20:27:00.467 回答
-1

与, String a_String b

你在做a == b而不是a.equals(b)吗?

于 2012-10-01T20:25:45.357 回答