Robolectric 中的影子类是各种 Android 类的替代品,只能根据它们实现的功能进行更改。
查看ShadowLocationManager 的源代码,您可以使用一些方法来调整伪造品的行为:
public void setProviderEnabled(String provider, boolean isEnabled);
public void setProviderEnabled(String provider, boolean isEnabled, List<Criteria> criteria);
public boolean setBestProvider(String provider, boolean enabled);
public boolean setBestProvider(String provider, boolean enabled, List<Criteria> criteria);
public void setLastKnownLocation(String provider, Location location);
您可以通过以下方式获取 LocationManager 的影子实例:
LocationManager instanceOfLocationManager = Robolectric.newInstanceOf(LocationManager.class);
ShadowLocationManager slm = Robolectric.shadowOf(instanceOfLocationManager);
注意:在示例中,我使用 Robolectric 创建LocationManager
. 根据您的测试设置,此实例可能来自您的注入框架或直接来自调用Context.getSystemService(..)
. 底线是,确保测试中的实例与正在测试的代码使用的实例相同。