【问题标题】:Android unit test actionbar with tabs and fragments带有选项卡和片段的 Android 单元测试操作栏
【发布时间】:2014-02-23 18:48:24
【问题描述】:

我正在尝试为在选项卡模式下使用 ActionBar 的 Activity 编写单元测试。 在我的 Activity 的选项卡侦听器中,我将当前片段替换为另一个片段(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);
    }
}

测试失败,因为 currentFragment 不是预期的 MyContentFragment 的实例,而是 MyListFragment 的实例,尽管 selectedNavigationIndex 的测试工作正常。 任何人都可以请帮助或有任何建议吗? 谢谢。

【问题讨论】:

    标签: android unit-testing android-actionbar fragment


    【解决方案1】:

    一种方法是使用robotium 测试框架。 另请参阅android actionbar unit test using ActivityInstrumentationTestCase2中的答案

    【讨论】:

      【解决方案2】:

      尝试添加

      this.activity.getFragmentManager().executePendingTransactions();
      

      之后

      actionBar.setSelectedNavigationItem(1);
      

      【讨论】:

        猜你喜欢
        • 2015-05-04
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多