使用Robolectric复制的Otto provider测试Android活动
我在弄清楚如何使用Robolectric 2.2测试我的活动时遇到了一个小问题。我可能没有正确设置生命周期或整个测试 在我的活动中,我有一个像这样的奥托制作人:使用Robolectric复制的Otto provider测试Android活动,android,robolectric,otto,Android,Robolectric,Otto,我在弄清楚如何使用Robolectric 2.2测试我的活动时遇到了一个小问题。我可能没有正确设置生命周期或整个测试 在我的活动中,我有一个像这样的奥托制作人: @Produce public GetAlarmList produceAlarmList() { Log.v(this, "Producing GetAlarmList event."); return new GetAlarmList(mAlarmList); } 下面是我的测试 @RunWith(Robolect
@Produce public GetAlarmList produceAlarmList() {
Log.v(this, "Producing GetAlarmList event.");
return new GetAlarmList(mAlarmList);
}
下面是我的测试
@RunWith(RobolectricTestRunner.class)
public class GLarmListFragmentTests {
//GLarmMain mActivity;
ActivityController<GLarmMain> mController;
@Before
public void setUp() throws Exception {
mController = Robolectric.buildActivity(GLarmMain.class);
}
@After
public void tearDown() throws Exception {
mController = mController.destroy();
}
@Test
public void shouldHaveListFragment() {
GLarmMain activity = mController.create().start().resume().visible().get();
GLarmListFragment listFragment = (GLarmListFragment) activity.getSupportFragmentManager().findFragmentById(R.id.main_list_frag);
assertNotNull(listFragment);
}
@Test
public void shouldHaveListAdapter() {
GLarmMain activity = mController.create().start().resume().visible().get();
GLarmListFragment listFragment = (GLarmListFragment) activity.getSupportFragmentManager().findFragmentById(R.id.main_list_frag);
FuncAlarmListAdapter listAdapter = (FuncAlarmListAdapter)listFragment.getListAdapter();
assertNotNull(listAdapter);
}
}
有人有同样的问题吗?我如何解决它?找到了问题,将其留在此处供参考。 我没有处理pause()/onPause()生命周期步骤,因此从未调用:
@Override
protected void onPause() {
super.onPause();
Log.v(this, ".onPause()");
mBus.unregister(this); // unregisters.
}
将上述代码更改如下:
@After
public void tearDown() throws Exception {
mController = mController.pause().stop().destroy();
}
@After
public void tearDown() throws Exception {
mController = mController.pause().stop().destroy();
}