我正在尝试使用robolectric 3.3.2测试活动。 想要模拟和活动的成员初始化,因为直接调用会导致NPE。
ActivityController<MyActivity> activityController =
Robolectric.buildActivity(MyActivity.class);
mTestActivity = activityController.get();
Mockito.when(mTestActivity.getCountry()).thenReturn("xxxx");
activityController.setup();
尝试了上面的代码,但是setup。()(oncreate)忽略了模拟 getCountry方法并从activity中调用定义。
有没有办法实现这个目标?
答案 0 :(得分:0)
即使您使用间谍(@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();
}
}