2010-11-15 12 views
3

J'ai une application, qui utilise le LocationManager. Par conséquent, je suis en train d'écrire un test d'instrumentation. J'ai déjà trouvé un answer similaire, mais cela ne marchera pas pour moi.tester fournisseur de localisation dans le projet de test d'instrument android

public class LocationSensorTest extends AndroidTestCase { 
    /*package*/ LocationManager lm; 
    private LocationSensor sensor; 

    @Override 
    protected void setUp() throws Exception { 
    super.setUp(); 
    sensor = new LocationSensor(getContext()); 
    lm = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE); 
    lm.addTestProvider("test", false, false, false, false, false, false, false, Criteria.POWER_LOW, Criteria.ACCURACY_FINE); 
    lm.setTestProviderEnabled("test", true); 
    } 

    public void testHasAnyActiveLocationProvider() { 
    assertTrue(sensor.hasAnyActiveLocationProvider()); 
    } 
} 

Le test échoue au cours de la "addTestProvider" avec un SecurityException que le "android.permission.ACCESS_MOCK_LOCATION" est manquante. Le point est que le test d'instrumentation AndroidManifest.xml a cette autorisation utilise, mais l'application pour tester non.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.app.android.tests" android:versionCode="1" android:versionName="1.0"> 
    <application> 
    <uses-library android:name="android.test.runner" /> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
    </application> 
    <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="de.app.android" android:label="Requester App Tests" /> 
    <uses-sdk android:minSdkVersion="4" /> 
</manifest> 

Quelqu'un a une idée de comment résoudre ce problème?

Répondre

1
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 

devrait être en dehors de <application></application>

+0

qui est malheureusement pas la solution, car l'application réelle n'a pas l'autorisation .. :( – alosdev

+0

Mais il doit être testé comme ça. Et il faut aussi être en dehors des étiquettes dans tous les cas. – icyerasor