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

Programmatically setting genymotion gps during testing causes "SecurityException: invalid package name" when setting latitude

测试时,我通过 Genymotion 设置经纬度,如下所示:

 package com.mypackage.name;

 public class TestGps extends ActivityInstrumentationTestCase2<MyClass>{

    ... //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() returns 测试 的上下文中。要访问正在测试的应用程序的上下文,您需要改为调用 Instrumentation.getTargetContext()。您还应该考虑使用 InstrumentationRegistry。现在这是 Instrumentation 个实例的首选访问点。