0
我正在爲我的android應用程序的操作欄導航編寫單元測試。有兩個選項卡(主頁和提及)。主標籤應該顯示主頁片段,提示標籤應該顯示提示片段。我正在使用fragmentmanager來獲取活動中的當前片段,然後使用instanceof來查看它們是否屬於正確的類。使用ActivityInstrumentationTestCase2的Android操作欄單元測試
@UiThreadTest
public void testNavigationBar() {
assertEquals(ActionBar.NAVIGATION_MODE_TABS, actionBar.getNavigationMode());
assertEquals(2, actionBar.getNavigationItemCount());
Tab tab0 = actionBar.getTabAt(0);
assertNotNull(tab0);
assertNotNull(tab0.getText());
assertEquals(mActivity.getBaseContext().getString(R.string.navigation_home), tab0.getText());
Tab tab1 = actionBar.getTabAt(1);
assertNotNull(tab1);
assertNotNull(tab1.getText());
assertEquals(mActivity.getBaseContext().getString(R.string.navigation_mention),
tab1.getText());
FragmentManager sfm = mActivity.getSupportFragmentManager();
actionBar.selectTab(tab0);
assertEquals(0, actionBar.getSelectedNavigationIndex());
Fragment currentFragment = sfm.findFragmentById(R.id.frameContainer);
assertNotNull(currentFragment);
assertTrue(currentFragment instanceof HomeTimeLineFragment);
actionBar.selectTab(tab1);
assertEquals(1, actionBar.getSelectedNavigationIndex());
Log.d(tag, String.valueOf(actionBar.getSelectedTab().getText()));
currentFragment = sfm.findFragmentById(R.id.frameContainer);
assertNotNull(currentFragment);
assertTrue(currentFragment instanceof MentionsFragment);
}
測試失敗,因爲currentFragment仍然是HomeTimeLineFragment的一個實例。 Btw log.d語句打印出「提及」。所以提到選項卡肯定是在導航欄中選擇的。