2014-02-23 3 views
0

Я пытаюсь написать единичный тест для Activity, который использует ActionBar в табу-режиме. на вкладке слушателя моей деятельности Я заменяю текущий фрагмент другим фрагментом (MyListFragment, MyContentFragment) В моем простом модульном тесте я хочу проверить, отображаются ли нужные фрагменты при нажатии соответствующей вкладки.Панель тестирования тестового блока Android с вкладками и фрагментами

Мой блок-тест выглядит следующим образом.

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 Althoug теста на selectedNavigationIndex работает отлично. Может ли кто-нибудь помочь или предложить какое-либо предложение? Спасибо.

ответ

0

Попробуйте добавить

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

после

actionBar.setSelectedNavigationItem(1); 
Смежные вопросы