Create a gist now

Instantly share code, notes, and snippets.

Trying to test maps with Robolectric
public class ConnectivityBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("ConnectivityBroadcastReceiver onReceive");
}
}
@Implements(value = MapActivity.class, inheritImplementationMethods = true)
public class ExtendedShadowMapActivity extends ShadowMapActivity {
public void __constructor__() {
super.__constructor__();
}
@Implementation
public void onResume() {
BroadcastReceiver connectivityBroadcastReceiver = new ConnectivityBroadcastReceiver();
registerReceiver(connectivityBroadcastReceiver, new IntentFilter());
try {
realActivity.getClass().getDeclaredField("mCalled").setBoolean(realActivity, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@RunWith(RobolectricTestRunner.class)
@Config(manifest = TestUtility.ANDROID_MANIFEST_XML, shadows=ExtendedShadowMapActivity.class)
public class LocationsResultsMapTest {
private LocationsMainActivity activity;
private ActivityController<LocationsMainActivity> activityController;
@Before
public void setUp() throws Exception {
// activityController = Robolectric.buildActivity(LocationsMainActivity.class);
activity = Robolectric.buildActivity(LocationsMainActivity.class).create().get();
}
@Test
public void test() {
}
}
public class MockMapActivity extends MapActivity {
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
}
}
@ebabel
ebabel commented Feb 20, 2014

Class under test changed to MockMapActivity, still same error.

@ryazmin
ryazmin commented Feb 20, 2014

do not extend ShadowMapActivity in your custom shadow , because in this case the call of
super.constructor();
in your shadow will not have any effect. In ShadowMapActivity this method just blank.
Take code from here https://github.com/robolectric/robolectric/blob/master/src/main/java/org/robolectric/shadows/ShadowMapActivity.java
rename class name and add changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment