在 onCreate 之前模拟 activity class 成员
Mock activity class member before onCreate
我正在尝试使用 robolectric 3.3.2 测试 activity。
想模拟和 activity 的成员初始化作为 NPE 中的直接调用结果。
ActivityController<MyActivity> activityController =
Robolectric.buildActivity(MyActivity.class);
mTestActivity = activityController.get();
Mockito.when(mTestActivity.getCountry()).thenReturn("xxxx");
activityController.setup();
尝试了上面的代码,但是 setup.() (oncreate) 忽略了模拟
getCountry 方法并调用 activity.
中的定义
有办法实现吗?
即使你使用间谍也不会这样工作(@Spy
, Mockito.spy()
)。
你应该使用存根:
public class MyActivityTest{
public static class StubMyActivity extends MyActivity {
Country getCountry() {
return someSpecialCountry;
}
}
@Before
public void setUp(){
ActivityController<StubMyActivity> activityController =
Robolectric.buildActivity(StubMyActivity.class);
mTestActivity = activityController.setup().get();
}
}
我正在尝试使用 robolectric 3.3.2 测试 activity。 想模拟和 activity 的成员初始化作为 NPE 中的直接调用结果。
ActivityController<MyActivity> activityController =
Robolectric.buildActivity(MyActivity.class);
mTestActivity = activityController.get();
Mockito.when(mTestActivity.getCountry()).thenReturn("xxxx");
activityController.setup();
尝试了上面的代码,但是 setup.() (oncreate) 忽略了模拟 getCountry 方法并调用 activity.
中的定义有办法实现吗?
即使你使用间谍也不会这样工作(@Spy
, Mockito.spy()
)。
你应该使用存根:
public class MyActivityTest{
public static class StubMyActivity extends MyActivity {
Country getCountry() {
return someSpecialCountry;
}
}
@Before
public void setUp(){
ActivityController<StubMyActivity> activityController =
Robolectric.buildActivity(StubMyActivity.class);
mTestActivity = activityController.setup().get();
}
}