It seems to me that building an Activity unit test with Robolectric\'s lifecycle utilities (starting with Robolectric.buildActivity()) and spying on the same Ac
The answer is using the reflection to replace the "real" Activity object in ActivityController.
@Test
public void someTestMethod() throws NoSuchFieldException, IllegalAccessException {
ActivityController ac = Robolectric.buildActivity(LoginActivity.class);
LoginActivity spiedActivity = spy(ac.get());
replaceComponentInActivityController(ac, spiedActivity);
ac.create();
// do your work
}
public static void replaceComponentInActivityController(ActivityController> activityController, Activity activity)
throws NoSuchFieldException, IllegalAccessException {
Field componentField = ComponentController.class.getDeclaredField("component");
componentField.setAccessible(true);
componentField.set(activityController, activity);
}
I test it by Robolectric 3.1, and it's ok.