在测试期间以编程方式设置genymotion gps会在设置纬度时导致“SecurityException:invalid package name”

测试时,我通过Genymotion设置lat long,如下所示:

package com.mypackage.name; public class TestGps extends ActivityInstrumentationTestCase2{ ... //setup just calls super.setup(); public void testLocationButton(){ Gps gps = GenymotionManager.getGenymotionManager(getInstrumentation().getContext()).getGps(); gps.setStatus(Gps.Status.ENABLED); gps.setLatitude(40.7127); // the error happens here gps.setLongitude(74.0059); } } 

运行时出现以下问题:

 java.lang.SecurityException: invalid package name: com.mypackage.name at android.os.Parcel.readException(Parcel.java:1546) at android.os.Parcel.readException(Parcel.java:1499) at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:582) at android.location.LocationManager.requestLocationUpdates(LocationManager.java:867) at android.location.LocationManager.requestLocationUpdates(LocationManager.java:490) at com.genymotion.api.Gps.waitForTargetLocation(Gps.java:271) at com.genymotion.api.Gps.setLatitude(Gps.java:134) 

在测试中, Instrumentation.getContext()返回测试的上下文。 要访问正在测试的应用程序的上下文,您需要调用Instrumentation.getTargetContext() 。 您还应该考虑使用InstrumentationRegistry 。 现在,这是Instrumentation实例的首选访问点。