call to Android API always returns 0 in a unit test

Viewed 881

I am trying to calculate distance between two locations, I tried both location.distanceTo and Location.distanceBetween method but in both cases 0 is returned, I am not sure what am I doing wrong. Here is my method:

public static double distance(double lat1, double lon1, double lat2, double lon2, DistanceUnit unit) {
    Location location1 = new Location("");
    location1.setLatitude(lat1);
    location1.setLongitude(lon1);
    Location location2 = new Location("");
    location2.setLatitude(lat2);
    location2.setLongitude(lon2);
    // Distance in km
    double dist = location1.distanceTo(location2) / 1000;

    if (unit == DistanceUnit.Miles) {
        // Distance in miles
        dist = dist / 1.6;
    }
    return dist;
}

The unit test I am running to ensure that the test run is:

@Test
public void testDistance() {
    double lat1 = 40.2582279;
    double lon1 = -75.2654062;

    double lat2 = 40.476492;
    double lon2 = -75.355655;

    double distance = LocationUtils.distance(lat1, lon1, lat2, lon2, DistanceUnit.Kilometer);

    Assert.assertEquals(20, distance, 2);

}

And result I am getting is:

java.lang.AssertionError: 
Expected :20.0
Actual   :0.0

Thanks in advance

1 Answers
Related