Hallo Leute,
ich habe eine Testklasse geschrieben, mit der ich die GPS Daten über ein Mock Objekt beziehe möchte.
Hier erstmal der Code:
Java
package de.reichenbach.resident.test.network;
import de.reichenbach.resident.view.ResidentActivity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.test.ActivityInstrumentationTestCase2;
public class LocationMockProviderTest extends ActivityInstrumentationTestCase2<ResidentActivity>
implements LocationListener {
private static final String PROVIDER = "gps";
private ResidentActivity resident;
private LocationManager locationManager;
private double latitude;
private double longitude;
public LocationMockProviderTest(String name) {
super(ResidentActivity.class);
setName( name );
}
/* (non-Javadoc)
* @see android.test.ActivityInstrumentationTestCase2#setUp()
*/
@Override
protected void setUp() throws Exception {
initLocation();
}
private void initLocation() {
this.resident = getActivity();
this.locationManager = (LocationManager) this.resident.getSystemService( getActivity().
getApplicationContext().LOCATION_SERVICE );
this.locationManager.addTestProvider( PROVIDER, false, true, false, true, true, true, true, android.location.Criteria.POWER_HIGH, android.location.Criteria.ACCURACY_FINE );
this.locationManager.setTestProviderEnabled( PROVIDER, true );
this.locationManager.setTestProviderStatus(PROVIDER, LocationProvider.AVAILABLE, null, System.currentTimeMillis());
this.locationManager.requestLocationUpdates( PROVIDER, 0, 0, this );
Location location = new Location(PROVIDER);
location.setLatitude(10.0);
location.setLongitude(20.0);
location.setTime(System.currentTimeMillis());
locationManager.setTestProviderLocation(PROVIDER, location);
}
public void onLocationChanged( Location location ) {
this.latitude = location.getLatitude();
this.longitude = location.getLongitude();
}
public void onProviderDisabled( String provider ) {
// TODO Auto-generated method stub
}
public void onProviderEnabled( String provider ) {
// TODO Auto-generated method stub
}
public void onStatusChanged( String provider, int status, Bundle extras ) {
// TODO Auto-generated method stub
}
public void testLocationProvider() {
int latitude = 10;
int longitude = 20;
assertEquals( latitude, ((int) this.latitude) );
}
/* (non-Javadoc)
* @see android.test.ActivityInstrumentationTestCase2#tearDown()
*/
@Override
protected void tearDown() throws Exception {
locationManager.removeTestProvider(PROVIDER);
}
}
Alles anzeigen
Mein Problem besteht darin das die Methode onLocationChanged nicht aufgerufen wird. Daher wird das natürlich auch nichts mit den Test.
Die entsprechende Berechtigung habe ich vergeben!
Hoffe jemand von euch hat eine Idee woran das liegt?!
Danke schonmal
Liebe Grüße