Ambiguous method call Both assertEquals(Object, Object) in Assert and assertEquals(double, double) in Assert match:

39,878

Solution 1

Your getScore() returns Double, not double. Therefore compiler is confused: Should it convert both arguments to Object, or if it should convert only the Double to 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

Anyway, I would set the method to return primitive type double.

Solution 2

If you specifically interested in using Assert.assertEquals(double, double) (the primitive version), try calling overridden method that allows deviation and setting allowed deviation to zero, like this:

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

You might also want to have third parameter to be something other than zero if person.getScore() is allowed to be slightly different from 2.5. For example, if 2.500001 is acceptable, then your test becomes

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

Solution 3

If you specifically want to avoid casting AND use the primitive version, you can get the primitive result from a wrapper object. For example:

    double a = 2.0;
    Double b = 2.0;
    assertEquals(a, b.doubleValue()); //Deprecated so use the one with delta

    Integer c = 2;
    int d = 2;
    assertEquals(c.intValue(), d);

    Long e = 2L;
    long f = 2L;
    assertEquals(e.longValue(), f);
Share:
39,878
java123999
Author by

java123999

Updated on March 26, 2021

Comments

  • java123999
    java123999 about 3 years

    I am getting the following error:

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

    For this line of code in my Junit tests, note that getScore() returns a double:

    assertEquals(2.5, person.getScore());
    

    This is my assert import:

    import static org.junit.Assert.*;
    

    What is causing this and how can I fix this?