2

私はこの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 + "]");
        }
}
4

6 に答える 6

8

] と '調達' の間にスペースがあります

仕事=】調達

于 2012-10-01T20:23:57.437 に答える
2

アサーション ステートメントを使用して、予想される文字列に余分なスペースがあります。

于 2012-10-01T20:24:26.670 に答える
1

これはおそらく JobType.toString() メソッドが余分なスペースを返すために発生したものです。

于 2012-10-01T20:26:24.907 に答える
1

toString() メソッドで返される文字列に余分なスペースがあるため、返される文字列がテストで期待される文字列と (わずかに) 異なるものになると思います。

于 2012-10-01T20:27:00.467 に答える
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;
}

上記のコードは、すべてのフィールドが null 非許容であり、それJobTypeenum. そしてtoString()、オブジェクトではなくオブジェクトを比較している限り、ここでは何もする必要がないかもしれませんtoString()(悪い習慣)。

于 2012-10-01T20:25:45.210 に答える
-1

String aString b、_

a == bの代わりにやっていますa.equals(b)か?

于 2012-10-01T20:25:45.357 に答える