>我正在尝试为在选项卡模式下使用操作栏的活动编写单元测试。在我的活动的选项卡侦听器中,我正在用另一个片段替换当前片段(MyListFragment,MyContentFragment)在我的简单单元测试中,我想检查单击相应选项卡时是否显示了正确的片段。
我的单元测试如下所示。
public class TestMyActivity
extends android.test.ActivityInstrumentationTestCase2<MyActivity>
@Override
protected void setUp() throws Exception
{
super.setUp();
this.activity = getActivity();
}
@UiThreadTest
public void testSelectContentTab()
{
ActionBar actionBar = this.activity.getActionBar();
Tab tab_list = actionBar.getTabAt(0);
Tab tab_content = actionBar.getTabAt(1);
actionBar.setSelectedNavigationItem(1);
assertEquals(1, actionBar.getSelectedNavigationIndex());
FragmentManager fm = this.activity.getFragmentManager();
Fragment currentFragment =
fm.findFragmentById(resourceIdOfTab_navigation_fragment_container);
assertTrue(currentFragment instanceof MyContentFragment);
}
}
测试失败,因为当前片段不是预期的 MyContentFragment 实例,而是 MyListFragment 的实例,因为所选导航索引的测试工作正常。任何人都可以提供帮助或有任何建议吗?谢谢。
一种方法是使用robotium测试框架。另请参阅使用 ActivityInstrumentationTestCase2 的 android actionbar 单元测试中的答案
尝试添加
this.activity.getFragmentManager().executePendingTransactions();
后
actionBar.setSelectedNavigationItem(1);