2017-01-27 12 views
4

私は次のようなエラーになっています:私のJunitテストでのコード行のためにあいまいなメソッド呼び出しアサートとアサートの試合で(ダブル、ダブル)のassertEqualsで両方のassertEquals(オブジェクト、オブジェクト):

Both assertEquals(Object, Object) in Assert and assertEquals(double, double) in Assert match 

を、

assertEquals(2.5, person.getScore()); 

これは私のアサートインポートです:

import static org.junit.Assert.*; 
は() doubleを返すことに注意してください

これを引き起こしているのはどうしたらいいですか?

答えて

9

なり)倍増ない、ダブルを返します。したがって、コンパイラーは混乱します:彼は両方の引数をObjectに変換すべきか、DoubleをDoubleに変換する必要がありますか?

double a = 2.0; 
    Double b = 2.0; 
    // assertEquals(a,b); // fails to compile 
    // the compiler is confused whether to use 
    assertEquals((Object) a,(Object) b); // OK 
    // or 
    assertEquals(a,(double) b); // OK 

とにかく、私はプリミティブ型doubleを返すようにメソッドを設定します。

0

あなたAssert.assertEquals(double, double)を使用することに特に興味を持って(プリミティブ版)は、偏差を可能にオーバーライドされたメソッドを呼び出すと、このように、ゼロに許容される偏差を設定しようとした場合:

assertEquals(2.5, person.getScore(), 0.0); 

あなたはまた、第3のパラメータを持っている場合がありますperson.getScore()2.5と若干異なる場合は、0以外の値にしてください。 2.500001が許容されている場合、その後、あなたのテストは、私は(あなたのgetScoreを推測

assertEquals(2.5, person.getScore(), 0.000001); 
関連する問題